【发布时间】:2018-12-21 05:14:26
【问题描述】:
JavaScript 生成器允许您以程序方式生成操作。
是否可以在本地跳过/调用特定收益?
鉴于以下示例,如何实现?
我想产生值 1、3 和 5。
function *getVal() {
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
}
let x = getVal();
// I want to yield ONLY values 1 , 3 , & 5
// Here val will equal 1
let val = x.next();
// I now want to val to equal 3
val = << skip second yield and hit 3 >>
// Is it possible to skip a yield natively?
// ...
【问题讨论】:
-
如果你想跳过一个收益,为什么不在将
x.next()分配给val之前调用x.next()? -
你不能跳过一个 yield,但你可以调用它并忽略结果。
-
@Ivan 谢谢,我知道你可以直接调用而不分配,但是跳过而不调用将要跳过的那个怎么样。
-
@Nicholas,这假设您知道生成器将产生的值,对吧?
-
我认为要记住的是,生成器仍然像函数一样运行。
yield会暂停该功能,直到它再次启动,但是您不能从外部跳过生成器的一部分,就像您可以进入并跳过任何其他功能的一部分一样。
标签: javascript ecmascript-6 generator yield next