Skip to content

Instantly share code, notes, and snippets.

@jakearchibald
Last active June 28, 2022 07:33
Show Gist options
  • Save jakearchibald/edbc78f73f7df4f7f3182b3c7e522d25 to your computer and use it in GitHub Desktop.
Save jakearchibald/edbc78f73f7df4f7f3182b3c7e522d25 to your computer and use it in GitHub Desktop.
function createAsyncFunction(fn) {
return function () {
var gen = fn.apply(this, arguments);
return new Promise(function (resolve, reject) {
function step(key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
return Promise.resolve(value).then(function (value) {
step("next", value);
}, function (err) {
step("throw", err);
});
}
}
return step("next");
});
};
}
@jakearchibald
Copy link
Author

Yep!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment