Fork me on GitHub
秋染蒹葭

ES6探索之四:Generator函数

Generato顾名思义,就是一个生成器函数,生成什么?生成遍历器。换句话说 Generator 函数就是遍历器生成函数。

执行到第一个yield的位置的过程中发生了什么,每次的返回值是什么

1
2
3
4
5
6
7
8
9
10
function* helloGen () {
console.log('1')
console.log('2',yield 'hellp')
yield 'world'
return 'ending'
}
var hwg = helloGen()
utils.Logger(hwg.next())

next 表示上一个yield的返回值,因此他的值应该打印在上一个yield语句所在的地方。V8 引擎直接忽略第一次使用next方法时的参数,只有从第二次使用next方法开始,参数才是有效的。从语义上讲,第一个next方法用来启动遍历器对象,所以不用带有参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function* dataConsumer() {
console.log('Started');
console.log(`1. ${yield}`);
console.log(`2. ${yield}`);
return 'result';
}
let genObj = dataConsumer();
genObj.next();
// Started
genObj.next('a')
// 1. a
genObj.next('b')
// 2. b

参考资料
异步Promise及Async/Await可能最完整入门攻略

本文标题:ES6探索之四:Generator函数

文章作者:zhyjor

发布时间:2018年03月19日 - 09:03

最后更新:2023年10月11日 - 02:10

原始链接:https://zhyjor.github.io/2018/03/19/ES6探索之四:Generator函数/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

🐶 您的支持将鼓励我继续创作 🐶

热评文章