ES6 yield* - 在引用的生成器上一次只能产生一个值
ES6 yield* - only yield one value at a time on referenced generator?
当一个生成器引用另一个生成器时,有没有办法让它达到引用的生成器g1()
在调用yield* g1()
时一次只迭代并产生一个值的位置?而不是在yield* g1()
时遍历g1()
的所有值。
来自 Mozilla 的示例
例如。。。。取而代之的是:
function* g1() {
yield 2;
yield 3;
yield 4;
}
function* g2() {
yield 1;
yield* g1();
yield 5;
}
var iterator = g2();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: 4, done: false }
console.log(iterator.next()); // { value: 5, done: false }
让它这样做:
function* g1() {
yield 2;
yield 3;
yield 4;
}
function* g2() {
yield 1;
yield* g1();
//notice I am calling it a second time for value 3
yield* g1();
yield 5;
}
var iterator = g2();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
//notice value 4 is missing
console.log(iterator.next()); // { value: 5, done: false }
No. yield*
委托另一个生成器生成的所有值。
如果需要更精细的控制,则应手动迭代它。
function* g1() {
yield 2;
yield 3;
yield 4;
}
function* g2() {
yield 1;
var it = g1();
yield it.next().value;
yield it.next().value;
yield 5;
}
var iterator = g2();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
//notice value 4 is missing
console.log(iterator.next()); // { value: 5, done: false }
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- ES6生成器-第一个next()没有yield表达式的示例
- 我如何用下划线做一个yield循环
- yield Promise抛出TypeError: undefined不是一个函数
- 在回调中调用yield, redux saga给出了一个异常原因
- ES6 yield* - 在引用的生成器上一次只能产生一个值