如何声明异步生成器功能

时间:2017-07-03 10:45:08

标签: javascript node.js async-await generator

我正在尝试在Node.js中创建异步生成器函数,但似乎不可能。

我的Node.js版本:7.6.0。

我的代码

async function* async_generator(){
  for(let i = 0; i < 10; i++){
    yield await call_to_async_func(i);
  };
}

我遇到错误

enter image description here

有谁知道这是什么问题?为什么我可以创建异步生成器函数,而我可以独立创建生成器函数或异步函数?

2 个答案:

答案 0 :(得分:5)

它在那里它确实有效,但目前它是和谐旗帜的背后。

example.js

async function* async_generator() {
  for (let i = 0; i < 10; i++) {
    yield await new Promise(r => setTimeout(_ => r("hello world"), 100))
  };
}

async function main(){
  for await (let item of async_generator()){
    console.log(item);
  }
}

main().catch(console.log);

运行(在节点v8.5.0中适用于我)

node --harmony-async-iteration example.js

请注意,该提案仍处于第3阶段,如果您想在浏览器中使用它,您可能还需要使用打字稿或babel进行转换。

更新:

从节点9开始,异步生成器被暂存。您只需使用--harmony即可启用它。

答案 1 :(得分:1)

根本就没有异步生成器功能。

然而。他们仍然在弄清楚他们的语义是什么,请参阅async iteration proposal

相关问题