[英]For..of with Symbol.asyncIterator
为什么 Symbol.asyncIterator 不工作?
const obj = {
async *[Symbol.asyncIterator] () {
yield 10;
yield 100;
yield 1000;
},
};
for (const val of obj) {
console.log(obj);
}
错误:TypeError:obj 不可迭代
for await (const val of obj) {
console.log(obj);
}
错误:SyntaxError: for await (... of...) 仅在异步函数和异步生成器中有效
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
错误:SyntaxError: for await (... of...) 仅在异步函数和异步生成器中有效
因为它是异步可迭代的,所以您需要等待每个值:
for await (const val of obj) {
console.log(obj);
}
注意:这一切都需要包装在异步 function 因为 Node.js 默认不支持顶级等待:
(async() => {
for await (const val of obj) {
console.log(val);
}
})()
在异步 function 中使用 await
const obj = { async * [Symbol.asyncIterator]() { yield 10; yield 100; yield 1000; }, }; (async() => { for await (const val of obj) { console.log(val); } })()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.