UYOU
2022-12-29 15:14:37
為什么 Symbol.asyncIterator 不工作?const obj = { async *[Symbol.asyncIterator] () { yield 10; yield 100; yield 1000; },};for (const val of obj) { console.log(obj);}錯(cuò)誤:類型錯(cuò)誤:obj 不可迭代for await (const val of obj) { console.log(obj);}error: SyntaxError: for await (... of ...) 僅在異步函數(shù)和異步生成器中有效(async() => { for await (const val of obj) { console.log(val); }})()error: SyntaxError: for await (... of ...) 僅在異步函數(shù)和異步生成器中有效
2 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
因?yàn)樗且粋€(gè)異步迭代器,所以您需要等待每個(gè)值:
for await (const val of obj) {
console.log(obj);
}
注意:這一切都需要包裝在一個(gè)異步函數(shù)中,因?yàn)?Node.js 默認(rèn)不支持頂級(jí)等待:
(async() => {
for await (const val of obj) {
console.log(val);
}
})()

眼眸繁星
TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
在異步函數(shù)中使用 await
const obj = {
async * [Symbol.asyncIterator]() {
yield 10;
yield 100;
yield 1000;
},
};
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
添加回答
舉報(bào)
0/150
提交
取消