猿问

For..of 与 Symbol.asyncIterator

为什么 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 ...) 仅在异步函数和异步生成器中有效


UYOU
浏览 79回答 2
2回答

饮歌长啸

因为它是一个异步迭代器,所以您需要等待每个值:for await (const val of obj) {  console.log(obj);}注意:这一切都需要包装在一个异步函数中,因为 Node.js 默认不支持顶级等待:(async() => {  for await (const val of obj) {    console.log(val);  }})()

眼眸繁星

在异步函数中使用 awaitconst obj = {  async * [Symbol.asyncIterator]() {    yield 10;    yield 100;    yield 1000;  },};(async() => {  for await (const val of obj) {    console.log(val);  }})()
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答