美文网首页
两句话概括generator

两句话概括generator

作者: 乔治yuanbo | 来源:发表于2017-04-16 18:49 被阅读0次

    yield就像一张嘴,执行到yield的时候,嘴张开并把一个东西吐出(generator外面)去,然后一直保持张开状态不动,等外面喂进来另一个东西,再执行generator里面yield以下的代码。

    next先喂给generator一个东西,然后获取yield吐出来的东西,一个yield需要外边调两次next才能完成,第一次接收吐出值,第二次喂回一个新值。

    举例:

    function *myGenerator() {
      console.log('start');
      var foo = yield 2;
      console.log(foo);
      console.log('end');
    }
    
    var it = myGenerator();
    var fromIt = it.next(); //先把undefined喂给it,再接收yield吐出来的值
    setTimeout(() => {
      var final = it.next('toGenerator');//把字符串'toGenerator'喂给it
    }, 1000);
    

    如果只是这样,也没什么大用,generator的威力配合Promise才能发挥出来,通常用法是yield吐出一个Promise,然后在Promise执行完成后,把Promise的结果喂回去,这样在generator内部,代码看起来就像是在同步执行,异常处理也是同步的try...catch...方式。

    相关文章

      网友评论

          本文标题:两句话概括generator

          本文链接:https://www.haomeiwen.com/subject/nqvaattx.html