Javascript 使用Symbol.asyncIterator表示的..of
Symbol.asyncIterator为什么不工作Javascript 使用Symbol.asyncIterator表示的..of,javascript,Javascript,Symbol.asyncIterator为什么不工作 const obj = { async *[Symbol.asyncIterator] () { yield 10; yield 100; yield 1000; }, }; 错误:类型错误:obj不可编辑 错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效 错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效 因为它是一个异步it
const obj = {
async *[Symbol.asyncIterator] () {
yield 10;
yield 100;
yield 1000;
},
};
错误:类型错误:obj不可编辑
错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效
错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效
因为它是一个异步iterable,所以需要等待每个值:
for await (const val of obj) {
console.log(obj);
}
注意:这一切都需要包装在异步函数中,因为Node.js默认情况下不支持顶级等待:
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
因为它是一个异步iterable,所以需要等待每个值:
for await (const val of obj) {
console.log(obj);
}
注意:这一切都需要包装在异步函数中,因为Node.js默认情况下不支持顶级等待:
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
在异步函数中使用wait
const obj={
async*[Symbol.asyncIterator](){
产量10;
产量100;
产量1000;
},
};
(异步()=>{
等待(obj的常数){
控制台日志(val);
}
})()
在异步函数中使用wait
const obj={
async*[Symbol.asyncIterator](){
产量10;
产量100;
产量1000;
},
};
(异步()=>{
等待(obj的常数){
控制台日志(val);
}
})()
error:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效OK,它可以工作,您认为它为什么不能在这个资源上工作,我已经在那里测试了这段代码,您的回答不起作用error:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效OK,它是有效的,你认为它为什么不在这个资源上工作,我已经在那里测试了这个代码,你的答案是无效的,这个答案和@freezed的有什么不同?PS注释涵盖了顶层等待caveat@customcommander我猜你们从来并没有提交过一个你们正在写的答案,而另一个恰好在同一时间发布?我确实提交过。当答案确实相同时,我会删除它。我只是想指出一下,以防你也这么做。最后,我要说一句建设性的话:当你在异步函数中说使用wait
时,我发现这有误导性,并没有解决最初的问题。OP没有为实现异步迭代协议的对象使用正确的JS构造(for..of
vsfor wait..of
)。你的回答没有提到这一点,我觉得很遗憾。(对于记录,我不知道这个答案是+1还是-1)@customcommander可以自由编辑。用一个4-5行易读代码的工作示例似乎不言自明,这个答案与@freezed的有什么不同?PS注释涵盖了顶层等待caveat@customcommander我猜你们从来并没有提交过一个你们正在写的答案,而另一个恰好在同一时间发布?我确实提交过。当答案确实相同时,我会删除它。我只是想指出一下,以防你也这么做。最后,我要说一句建设性的话:当你在异步函数中说使用wait
时,我发现这有误导性,并没有解决最初的问题。OP没有为实现异步迭代协议的对象使用正确的JS构造(for..of
vsfor wait..of
)。你的回答没有提到这一点,我觉得很遗憾。(对于记录,我不知道这个答案是+1还是-1)@customcommander可以自由编辑。在一个工作示例中,所有4-5行非常简单易读的代码似乎不言自明
(async() => {
for await (const val of obj) {
console.log(val);
}
})()