Skip to content

Instantly share code, notes, and snippets.

@m8r1x
Created June 17, 2018 07:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save m8r1x/32b3030556a6f970a7b8f60958a2ab16 to your computer and use it in GitHub Desktop.
Save m8r1x/32b3030556a6f970a7b8f60958a2ab16 to your computer and use it in GitHub Desktop.
Promises + Generators
function async(generatorFn) {
return function () {
var iterator = generatorFn.apply(this, arguments);
function handle(result) {
if (result.done) return Promise.resolve(result.value);
return Promise.resolve(result.value).then(function (res) {
return handle(iterator.next(res));
}, function (err) {
return handle(iterator.throw(err));
});
}
try {
return handle(iterator.next());
} catch (ex) {
return Promise.reject(ex);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment