代码改变世界

javascript 基础 --- Generator

2019-05-28 18:13  *奋斗*  阅读(106)  评论(0)    收藏  举报

yield 命令是异步两个阶段的分界线,它表示执行到此处,执行权交给其它协程。协程遇到 yield 命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。

gen.next( ) 作用就是执行 yield 后的表达式的值,然后把控制权交给 generator 函数, generator 函数获取控制权后,继续执行到下一个 yield 地方暂停,等待。

注意:这里 console.log(o++) 的结果是 1 哦,别搞错啦。我就搞错了...

输出结果:

Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。除此之外,它还有两个特性,使它可以作为异步编程的完整解决方案:函数体内外的数据交换和错误处理机制。

next 方法返回值的 value 属性,是 Generator 函数向外输出数据;next 方法还可以接受参数,这是向 Generator 函数体内输入数据。

如果最后一个 var y = yield x +2;  执行到最后时,value 就是 generator 函数传入的值。如下图所示:

个人统计【2】:2019-05-28、2019-05-29