为了账号安全,请及时绑定邮箱和手机立即绑定

For..of 与 Symbol.asyncIterator

For..of 与 Symbol.asyncIterator

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);}错误:类型错误: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);

  }

})()


查看完整回答
反对 回复 2022-12-29
?
眼眸繁星

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);

  }

})()


查看完整回答
反对 回复 2022-12-29
  • 2 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号