gpt4 book ai didi

javascript - yield* 是否等同于 javascript 中纯 yield 的 while 循环?

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:25 24 4
gpt4 key购买 nike

如果我有这样一行:

yield* foo()

我可以用以下曲调代替它吗:

while(true) {
var x = foo.next();
if(x.done)
break;
yield x;
}

显然这更冗长,但我试图了解 yield* 是否仅仅是语法糖,或者是否有一些我不清楚的语义方面。

最佳答案

您需要执行 yield x.value 而不是 yield x。您还需要调用 foo 来获取迭代器。 .nextfoo 生成器返回的迭代器的一个方法。

function *foo() {
yield 1;
yield 2;
yield 3;
}

function *f() {
yield *foo();
}

console.log(Array.from(f()));

function *g() {
var iterator = foo();
while (true) {
var x = iterator.next();
if (x.done) break;
yield x.value;
}
}

console.log(Array.from(g()));

关于javascript - yield* 是否等同于 javascript 中纯 yield 的 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com