3
event
が放射され、すべてのハンドラが発射を完了したときを知る方法を探しています。すべてのイベントハンドラをasync処理する方法はありますか?
以下のコードは次のように記録します。
after do something
undefined
do something one
do something two
そして、何私が探しているこのようなものされています
do something one
do something two
after do something
undefined
は、ここでは、コードです:
import Promise from 'bluebird'
import { EventEmitter } from 'events'
let event = new EventEmitter()
let doSomethingOne = Promise.resolve().then(() => console.log('do something one'))
let doSomethingTwo = Promise.resolve().then(() => console.log('do something two'))
event.on('myEvent', async function() {
return await doSomethingOne()
})
event.on('myEvent', async function() {
return await doSomethingTwo()
})
async function main() {
event.emit('myEvent', {'name': 'tom'})
// await event.finalized('myEvent')
console.log('after do something')
}
main()
.then(console.log)
.catch(console.error.bind(console))
がありますあなたがコールバックを得ることを可能にするイベント、約束、またはJavaScriptのアイデア/約束/すべてを待っている同期イベントハンドラ?
await event.finalized('myEvent')
私は非同期関数内1つの約束を待つための本当の必要はありませんことを承知している。注:このように
。これらのイベントハンドラが非同期であることを示すだけです。
私が正しく理解していれば、これはあなたが探しているものかもしれないhttp://bahmutov.calepin.co/promisify-event-emitter.html –
を読みますか? https://github.com/yortus/asyncawaitしかし、これはコードがより同期しているように見えます(ジェネレータのように)ので、あなたのコードを非同期にしたい場合は不十分かもしれません。 –
github gulpjs/bachのgulp4のバッハライブラリを探しますレポ私はあなたが欲しいものだと信じています。それは.seriesと.parallelを持っています。あなたが望むものをカスタマイズして入れ子にすることができます。 – YOU