JSFiddle - React, Tailwind, and code Playground
by Jerry Hong
JavaScript
function coroutine(generatorFunction) {
return function (...args) {
let generatorObject = generatorFunction(...args);
generatorObject.next();
return generatorObject;
};
}
function from(iterable, receiver) {
for (let x of iterable) {
receiver.next(x);
}
receiver.return(); // 發出結束的訊號
}
const forEach = coroutine(function* (callback) {
try {
while (true) {
let item = yield;
callback(item);
}
} finally {
console.log('DONE');
}
});
from([1,2,3], forEach(console.log))