码迷,mamicode.com
首页 > 其他好文 > 详细

generator函数

时间:2016-10-21 19:28:35      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:turn   log   next   pac   调用   ret   方法   指针   函数   

function* gen(x){
  var y = yield x + 2;
  return y;
}

var g = gen(1);
g.next() // { value: 3, done: false }
g.next() // { value: undefined, done: true }

Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。

异步操作需要暂停的地方,都用 yield 语句注明。

Generator 函数不同于普通函数,即执行它不会返回结果,返回的是指针对象。

调用 Generator 函数,会返回一个内部指针(即遍历器)。

调用指针 g 的 next 方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的 yield 语句,上例是执行到 x + 2 为止。

每次调用 next 方法,会返回一个对象,表示当前阶段的信息( value 属性和 done 属性)。value 属性是 yield 语句后面表达式的值,表示当前阶段的值;done 属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。

 

generator函数

标签:turn   log   next   pac   调用   ret   方法   指针   函数   

原文地址:http://www.cnblogs.com/cag2050/p/5985687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!