Skip to content

Instantly share code, notes, and snippets.

@thgreasi
Created August 7, 2015 19:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thgreasi/3d77ee3e832c1025af22 to your computer and use it in GitHub Desktop.
Save thgreasi/3d77ee3e832c1025af22 to your computer and use it in GitHub Desktop.
Promise Generator Consumers
// iterate till first success
new Promise((resolve) => {
runGeneratorOnce(myPromiseGenerator, initialValue);
function runGeneratorOnce(pg, result) { var status = pg.next(result);
if (status.done) { reject(); return; }
status.value.then(resolve).catch(value => {
return runGeneratorOnce(pg, value);
});
}
function* myPromiseGenerator() {
// many yields
}
});
// iterate all
new Promise((resolve) => {
runGeneratorOnce(myPromiseGenerator, initialValue);
function runGeneratorOnce(pg, result) {
var status = pg.next(result);
if (status.done) { resolve(); return; }
status.value.then(value => {
return runGeneratorOnce(pg, value);
}).catch(reject);
}
function* myPromiseGenerator() {
// many yields
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment