美文网首页
js中yield

js中yield

作者: 谁在烽烟彼岸 | 来源:发表于2018-12-28 15:45 被阅读0次

    在ES6中新增关键字yield,官方介绍如下

    The yield keyword is used to pause and resume a generator function.
    // yield这个关键字是用来暂停和恢复一个遍历器函数(的运行)的。

    yield是命令型关键字

    [rv] = yield [*][expression];

    生成器(Generator)

    生成器是ES6引入的新的函数形式, 可以在执行当中暂停自身,可以恢复执行,并不像普通函数那样保证运行到完毕。

    function *foo(){..}

    生成器并不会立即执行,需要调用它的next(..)方法才会执行,调用return()方法则会终止生成器的运行

    yield在生成器中的应用

    1.普通用法

    yield用来标示暂停点,也可放在循环中,用来表示一个重复暂停点。
    且在暂停时,会生成一个值,在调用nex(..)时,yield也会接收next传入的参数

    2.yield*

    *使得yield成为了yield * ,称之为yield委托(yield delegation)。yield * .. 需要一个iterable;然后它会调用这个迭代器,把自己的生成器控制权委托给这个迭代器,直到其耗尽。

    function *gen(){
         yield 1;
         yield 2;
         yield 3;
    }
    function *gen(){
         yield *[1,2,3];
    }
    function *bar(){
          yield *gen();
    }
    

    以上效果是相同的

    相关文章

      网友评论

          本文标题:js中yield

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