【发布时间】:2016-09-11 09:23:12
【问题描述】:
假设我创建了一个 ES6 生成器
function *createFibonacciIterator(a = 0, b = 1) {
yield b;
yield *createFib(b, b + a); // <== QUESTION IS ABOUT THIS LINE
}
然后我使用该生成器获取前 20 个结果
let fibber = createFibonacciIterator();
for (let ii = 0; ii < 20; ii++) {
console.log(fibber.next());
}
如果我将* 留在yield *createFib(b, b + a); 行之外,事情就会中断,这是有道理的,因为我不想产生一个迭代器而是一个实际值。
*在生成器中的技术含义是什么?
【问题讨论】:
-
yield *委托给另一个生成器。 -
可能是 yield * flatten the values and concat them into generator function* 懒惰地。
标签: javascript iterator ecmascript-6 generator yield