js中yield

在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();
}

以上效果是相同的

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值