Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

为什么 JS generator .next 函数需要传参?

看了一圈网上的文章,关于 generator 函数自动执行的部分,看了 TJ 的 co 模块,都是递归调用 .next(),但是重复调用的时候是传入参数的,这个操作有什么实际的含义么?通常手动调用也不需要呀

function spawn(genF) {
  return new Promise(function(resolve, reject) {
    const gen = genF();
    function step(nextF) {
      let next;
      try {
        next = nextF();
      } catch(e) {
        return reject(e);
      }
      if(next.done) {
        return resolve(next.value);
      }
      Promise.resolve(next.value).then(function(v) {
        step(function() { return gen.next(v); });
      }, function(e) {
        step(function() { return gen.throw(e); });
      });
    }
    step(function() { return gen.next(undefined); });
  });
}

Enregistrer un commentaire

0 Commentaires