2017-12-03 36 views
0

TypeScriptまたはJavaScriptのEventEmitterに非同期コールバックを提供することはできますか?EventEmitterの非同期コールバック

someEmitter.on("anEvent", async() => console.log("hello"));

これは非同期で実行される関数を引き起こすのでしょうか?もしそうなら、なぜEventEmitterで非同期関数を使用しないのですか?

答えて

0

TypeScriptまたはJavaScriptのEventEmitterに非同期コールバックを提供することはできますか?

はい、あなたが持つEventEmitterに非同期機能を提供することができ、それはあなたがコールバック内awaitを使用できるようになりますが、それは魔法のようにあなたの関数は非同期で実行させません。

また、コールバック機能の外部には何も変更されません。 eventEmitterは、イベントが発生したときにコールバックを呼び出します。あなたのコールバックは、eventEmitterオブジェクトが何もしないという約束を返すようになります。

コールバック関数の内部で(内部的な理由で)awaitを使用することができますが、コールバック以外のものは変更されません。それはeventEmitterがどのようにしてビジネスの残りの部分をどう変えるかは変わりません。

これにより、関数は非同期で実行されますか?

いいえ。関数の呼び出し方法は変更されません。関数がすべて同期コードで構成されている場合、関数は引き続き呼び出され、同期的に実行されます。

FYIの場合、これはasyncと宣言された関数に当てはまります。関数がどのように呼び出されるかは変わりません。それは関数内でできることをいくつか変更し、関数が約束を返すように強制しますが、関数の呼び出し方法は変更しません。同期コードは、非同期関数であれ通常の関数であれ、同期コードです。私は本当にあなたが非同期関数が実際に何であるかについてもっと多くを読むことをお勧めします。

関連する問題