Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Symbol.asyncIterator表示的..of_Javascript - Fatal编程技术网

Javascript 使用Symbol.asyncIterator表示的..of

Javascript 使用Symbol.asyncIterator表示的..of,javascript,Javascript,Symbol.asyncIterator为什么不工作 const obj = { async *[Symbol.asyncIterator] () { yield 10; yield 100; yield 1000; }, }; 错误:类型错误:obj不可编辑 错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效 错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效 因为它是一个异步it

Symbol.asyncIterator为什么不工作

const obj = {
  async *[Symbol.asyncIterator] () {
    yield 10;
    yield 100;
    yield 1000;
  },
};
错误:类型错误:obj不可编辑


错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效


错误:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效


因为它是一个异步iterable,所以需要等待每个值:

for await (const val of obj) {
  console.log(obj);
}
注意:这一切都需要包装在异步函数中,因为Node.js默认情况下不支持顶级等待:

(async() => {
  for await (const val of obj) {
    console.log(val);
  }
})()

因为它是一个异步iterable,所以需要等待每个值:

for await (const val of obj) {
  console.log(obj);
}
注意:这一切都需要包装在异步函数中,因为Node.js默认情况下不支持顶级等待:

(async() => {
  for await (const val of obj) {
    console.log(val);
  }
})()

在异步函数中使用wait

const obj={
async*[Symbol.asyncIterator](){
产量10;
产量100;
产量1000;
},
};
(异步()=>{
等待(obj的常数){
控制台日志(val);
}

})()
在异步函数中使用wait

const obj={
async*[Symbol.asyncIterator](){
产量10;
产量100;
产量1000;
},
};
(异步()=>{
等待(obj的常数){
控制台日志(val);
}

})()
error:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效OK,它可以工作,您认为它为什么不能在这个资源上工作,我已经在那里测试了这段代码,您的回答不起作用error:SyntaxError:for await(…of…)仅在异步函数和异步生成器中有效OK,它是有效的,你认为它为什么不在这个资源上工作,我已经在那里测试了这个代码,你的答案是无效的,这个答案和@freezed的有什么不同?PS注释涵盖了顶层等待caveat@customcommander我猜你们从来并没有提交过一个你们正在写的答案,而另一个恰好在同一时间发布?我确实提交过。当答案确实相同时,我会删除它。我只是想指出一下,以防你也这么做。最后,我要说一句建设性的话:当你在异步函数中说
使用wait
时,我发现这有误导性,并没有解决最初的问题。OP没有为实现异步迭代协议的对象使用正确的JS构造(
for..of
vs
for wait..of
)。你的回答没有提到这一点,我觉得很遗憾。(对于记录,我不知道这个答案是+1还是-1)@customcommander可以自由编辑。用一个4-5行易读代码的工作示例似乎不言自明,这个答案与@freezed的有什么不同?PS注释涵盖了顶层等待caveat@customcommander我猜你们从来并没有提交过一个你们正在写的答案,而另一个恰好在同一时间发布?我确实提交过。当答案确实相同时,我会删除它。我只是想指出一下,以防你也这么做。最后,我要说一句建设性的话:当你在异步函数中说
使用wait
时,我发现这有误导性,并没有解决最初的问题。OP没有为实现异步迭代协议的对象使用正确的JS构造(
for..of
vs
for wait..of
)。你的回答没有提到这一点,我觉得很遗憾。(对于记录,我不知道这个答案是+1还是-1)@customcommander可以自由编辑。在一个工作示例中,所有4-5行非常简单易读的代码似乎不言自明
(async() => {
  for await (const val of obj) {
    console.log(val);
  }
})()