You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
753 B
JavaScript

"use strict";
module.exports = async function generatorLoopAsync(generator, callback = (value) => value) {
let lastResult = { done: false };
let lastValue;
while (lastResult.done === false) {
lastResult = generator.next(lastValue);
let evaluatedValue = (typeof lastResult.value?.then === "function")
? await lastResult.value
: lastResult.value;
lastValue = (lastResult.done === false)
? callback(evaluatedValue)
: evaluatedValue;
}
return lastValue;
};
function* testGen() {
let array = [];
array.push(yield Promise.resolve(1));
array.push(yield Promise.resolve(2));
array.push(yield Promise.resolve(3));
return array;
}
module.exports(testGen(), (number) => number * 2).then((result) => {
console.log(result);
});