2017-07-03 25 views
4

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

は、誰もが、問題が何であるかを知っていますか?ジェネレータ関数または非同期関数を独自に作成することができますが、非同期ジェネレータ関数を作成できないのはなぜですか?

+0

私が知る限り、非同期ジェネレータはES2018では存在しません。 – Ryan

+0

提案([ここ](https://github.com/jhusain/asyncgenerator))がありましたが、取り下げられました。 – robertklep

答えて

1

単純に非同期ジェネレータ機能はありません。

まだ。彼らはまだ彼らの意味論が何であるかを理解しています、async iteration proposalを見てください。

1

それはありますが動作しますが、現在はハーモニーフラグの後ろにあります。

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で使用したい場合は、まだあることに注意してくださいブラウザでは、これもまた、タイスクリプトやバベルで翻訳する必要があります。

更新:

ノード9以降、非同期ジェネレータがステージングされます。 --harmonyで簡単に有効にすることができます。

関連する問題