【发布时间】:2021-08-26 10:41:47
【问题描述】:
带有return 语句的生成器跳过for-await-of 循环的执行。
(async () => {
const gen = async function* () {
return { newState: "FAILURE" };
};
for await (const { newState } of gen()) {
console.log("Yey! new state is:", newState);
// do other stuff
}
})();
在上面写的情况下,整个 for-await-of 构造永远不会 console.log 任何东西。但是,当您将 return 替换为 yield (yield { newState: 'FAILURE' }) 时,一切都会按预期进行。
(async () => {
const gen = async function* () {
yield { newState: "FAILURE" };
};
for await (const { newState } of gen()) {
console.log("Yey! new state is:", newState);
// do other stuff
}
})();
为什么?
【问题讨论】:
标签: javascript asynchronous ecmascript-6 generator