Skip to content

Instantly share code, notes, and snippets.

@mdnmdn
Last active August 23, 2017 12:32
Show Gist options
  • Save mdnmdn/b64236ce54b439f8a9ef26f1c914e4be to your computer and use it in GitHub Desktop.
Save mdnmdn/b64236ce54b439f8a9ef26f1c914e4be to your computer and use it in GitHub Desktop.
Async with generator on node.js
const generatorAsync = function(generator){
let gen = generator();
let processNext = function(result){
var val = gen.next(result);
if (val.value && val.value.then){
// TODO: manage error with gen.throw(...)
val.value.then(res => processNext(res));
}
};
processNext();
};
const log = console.log.bind(console);
const promiseLog = function(msg, previousMsg = null){
return new Promise((resolve, reject) => {
process.nextTick(() => {
previousMsg = previousMsg ? ` previous: ${previousMsg}`: '' ;
log(`log: ${msg} ${previousMsg}`);
resolve(msg);
});
});
};
generatorAsync(function*(){
let old = yield promiseLog('gen1');
old = yield promiseLog('gen2',old);
old = yield promiseLog('gen3',old);
old = yield promiseLog('gen4',old);
promiseLog('gen5',old);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment