我正在尝试在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);
};
}
我遇到错误:
有谁知道这是什么问题?为什么我可以创建异步生成器函数,而我可以独立创建生成器函数或异步函数?
答案 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。