Skip to content

Instantly share code, notes, and snippets.

@slugbyte
Created May 20, 2016 07:43
Show Gist options
  • Select an option

  • Save slugbyte/718b05cd6cc270d32a0ca6d9bdfd28d0 to your computer and use it in GitHub Desktop.

Select an option

Save slugbyte/718b05cd6cc270d32a0ca6d9bdfd28d0 to your computer and use it in GitHub Desktop.
'use strict';
function pTest(num){
return new Promise((resolve, reject) => {
process.nextTick(() => {
resolve(++num);
});
});
}
run(function *gen(){
var a = yield pTest(1);
var b = yield pTest(a);
var c = yield pTest(b);
return [a, b, c];
}).then(function(result){
console.log('done with run');
console.log(result);
}).catch((err) => {
console.error(err);
});
function run(genorator){
var iter = genorator();
try {
return handle(iter.next());
} catch(e){
return Promise.reject(e);
}
function handle(gen){
if (gen.done) {
return Promise.resolve(gen.value);
}
return Promise.resolve(gen.value).then(function(res){
console.log(res);
return handle(iter.next(res));
}).catch(function(err) {
return handle(iter.throw(err));
});
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment