我无法理解生成器中“return”的语义。我将其理解为最终值,因此也是最后值。
function* gen() {
yield "foo";
return "bar";
}
for (const x of gen()) {
console.log(x);
}
这个例子只打印“foo”而不是“bar”。
编辑:
有没有办法用“for”语法获取“done=true”迭代器的返回值,还是总是丢失?
最佳答案
不,您不能从 for … of
循环中获取返回值。不过你可以试试
function* gen() {
yield 1;
yield 2;
return "done";
}
function* genAndLogResult() {
const val = yield* gen();
console.log(val);
}
for (const x of genAndLogResult()) {
console.log(x + 40);
}
关于javascript - 生成器返回值的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380067/