一个例子理解ES6的yield关键字
yield是什么
yield是ES6的新关键字,使函数暂停执行。
一个简单例子
function *countASb() { console.log('Show0:'); var a1 = yield console.log(1); console.log('Show1:',a1); var a2 = yield console.log(2); console.log('Show2:',a2); var a3 = yield console.log(3); console.log('Show3:',a3); var a4 = yield console.log(4); console.log('Show4:',a4); console.log('show:End'); } var mArs = countASb(0); mArs.next('a1'); mArs.next('a2'); mArs.next('a3'); mArs.next('a4'); mArs.next('a5');
输出:
Show0:
1
Show1: a2
2
Show2: a3
3
Show3: a4
4
Show4: a5
show:End
很容易理解的几个点:
- yield可以认为是暂停点。在执行generator函数的时候,在yield处会暂停。
- 执行next,会从一个yield暂停点执行到下一个yield暂停点
- (重点)next中的参数,会以上一个yield整体做为返回结果,参与执行。因此show1的结果是a2