如何声明异步生成器功能

Emi*_*mil 7 javascript generator node.js async-await

我试图在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);
  };
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

在此输入图像描述

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

Mei*_*hes 6

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

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);
Run Code Online (Sandbox Code Playgroud)

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

node --harmony-async-iteration example.js
Run Code Online (Sandbox Code Playgroud)

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

更新:

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

  • 对于节点 10,它们现在默认启用 (2认同)

Ber*_*rgi 1

Node.js 中根本没有异步生成器函数。

然而。他们仍在弄清楚它们的语义是什么,请参阅异步迭代提案