ES6-Generator函数(解决异步问题)

Generator函数:一种返回迭代器的函数
http://www.ruanyifeng.com/blog/2015/04/generator.html

generator函数使用:
1、分段执行,执行完一段yield语句自动暂停。
2、可以控制阶段和每个阶段的返回值
3、可以知道是否执行到结尾
4、yield关键字只能在生成器内部使用,生成器内部的函数都不可以。

注意:不能使用箭头函数来创建生成器
通过生成器创建的迭代器都是可迭代对象
生成器函数表达式,生成器函数声明

生成器也是函数,可以使用return语句提前推出函数执行,如果不设置值return空则就是相当于最后一次调用返回的是undefined,后面的yeild语句不会执行,如果return一个值,则返回对应的值,但若再次调用next(),还是会返回undefined。

//函数表达式
var xxx = function *(item){}
//函数声明
function *xxx(item){}
function* g() {
var o = 1;
yield o++;
yield o++;
}
var gen = g();
console.log(gen.next()); //  Object {value: 1, done: false}
var xxx = g();
console.log(gen.next()); // Object {value: 2, done: false}
console.log(xxx.next()); // Object {value: 1, done: false}
console.log(gen.next()); // Object {value: undefined, done: true}

generator和异步控制:
利用Generator函数的暂停执行的效果,可以把异步操作写在yield语句里面,等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在yield语句下面,反正要等到调用next方法时再执行。所以,Generator函数的一个重要实际意义就是用来处理异步操作,改写回调函数。

前端问题总结 文章被收录于专栏

总结一些前端常见的面试笔试题,来和大家分享鸭

全部评论

相关推荐

11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务