簡體   English   中英

For..of 和 Symbol.asyncIterator

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM