Javascript 发电机回路不正常';t为等待循环而工作

Javascript 发电机回路不正常';t为等待循环而工作,javascript,asynchronous,ecmascript-6,generator,Javascript,Asynchronous,Ecmascript 6,Generator,带有return语句的生成器跳过for wait of循环的执行 (异步()=>{ const gen=异步函数*(){ 返回{newState:“FAILURE”}; }; 用于等待(gen()的常量{newState}){ log(“是的!新状态是:”,newState); //做其他事情 } })();迭代器在完成之前从未生成任何内容,因此循环没有任何内容可迭代-序列为空。请注意,您可以多次yield,但return只能返回一次 for…of循环忽略迭代器的返回值。它仅在手动推进迭代器或

带有
return
语句的生成器跳过for wait of循环的执行

(异步()=>{
const gen=异步函数*(){
返回{newState:“FAILURE”};
};
用于等待(gen()的常量{newState}){
log(“是的!新状态是:”,newState);
//做其他事情
}

})();迭代器在完成之前从未生成任何内容,因此循环没有任何内容可迭代-序列为空。请注意,您可以多次
yield
,但
return
只能返回一次

for…of
循环忽略迭代器的
返回值。它仅在手动推进迭代器或使用
yield*
时有用

异步函数*generate(){
返回{newState:“FAILURE”};
};
常量生成器=(异步函数*(){
const{newState}=yield*generate()
log(“是的!新状态是:”,newState);
返回“某个值”;
})();

generator.next().then(console.log)
能否请您提供一些文档,其中明确说明/why for wait of ignores return?@Src It不会忽略
return
语句-它会按预期停止。它没有任何地方可以放置返回值-for
循环的
不是一个带有结果值的表达式。根据文档,yield和return都返回值,但是return而不是yield返回{done:true}。那么,为什么在这种情况下它的行为与收益率不一样呢?循环如何知道何时停止,因为如果我们用收益率交换返回值,我们仍然会得到正确的结果,考虑到我们没有手动说停止迭代,这通常是用return“return而不是yield returns{done:true}”-是的,完全正确。这标志着迭代的结束。不是最后一个值-否则不能有空序列。“为什么它不像收益率”——因为它是
返回
,而不是
收益