Skip to content

Instantly share code, notes, and snippets.

@haiiro-shimeji
Last active April 22, 2017 12:23
Show Gist options
  • Save haiiro-shimeji/c13fda557190ec66ab6c496df7741cc3 to your computer and use it in GitHub Desktop.
Save haiiro-shimeji/c13fda557190ec66ab6c496df7741cc3 to your computer and use it in GitHub Desktop.
GeneratorとPromiseの勉強ということでオレオレなco moduleを実装
//Dummy resource
module.exports = {
open: function() {
var res = {
read: function() {
return new Promise(function(_resolve, _reject) {
setTimeout(function() {
_resolve('hogeeee');
//_reject('read error!');
}, 1000);
});
},
close: function() {
console.log('Resource is closed.');
}
};
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('Resource is opened.');
resolve(res);
//reject('open error!');
}, 1000);
});
}
};
module.exports = function(gfn) {
var g = gfn();
var a = function(v) {
var b = g.next(v);
if (!b.done) {
return b.value.then(a);
} else {
return b.value;
}
};
return Promise.resolve().then(a);
};
var Resource = require('./00. Resource');
var co = require('./01. co');
co(function* () {
var res = yield Resource.open('path');
try {
var result = yield res.read();
console.log(result);
} finally {
res.close();
}
})
.catch(function(err) { console.error(err); });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment