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))