为什么 Symbol.asyncIterator 不工作?const obj = { async *[Symbol.asyncIterator] () { yield 10; yield 100; yield 1000; },};for (const val of obj) { console.log(obj);}错误:类型错误:obj 不可迭代for await (const val of obj) { console.log(obj);}error: SyntaxError: for await (... of ...) 仅在异步函数和异步生成器中有效(async() => { for await (const val of obj) { console.log(val); }})()error: SyntaxError: for await (... of ...) 仅在异步函数和异步生成器中有效
2 回答

饮歌长啸
TA贡献1951条经验 获得超3个赞
因为它是一个异步迭代器,所以您需要等待每个值:
for await (const val of obj) {
console.log(obj);
}
注意:这一切都需要包装在一个异步函数中,因为 Node.js 默认不支持顶级等待:
(async() => {
for await (const val of obj) {
console.log(val);
}
})()

眼眸繁星
TA贡献1873条经验 获得超9个赞
在异步函数中使用 await
const obj = {
async * [Symbol.asyncIterator]() {
yield 10;
yield 100;
yield 1000;
},
};
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
添加回答
举报
0/150
提交
取消