Events, but asynchronous
This module is the lightest wrapper I could come up with around the EventEmitter
to add support for async events with Promises. It only re-implements the emit
method. This now returns a Promise
which will be resolved when all the event handlers have completed.
Handler functions can return a Promise
to indicate that they are asynchronous which will then wait for resolution before emit resolves.
Install
$ npm install --save events-async
Usage
var EventEmitter = ; var ee = ; // Add an asyncronous listeneree; // Emit an event and wait for it to completeee;
With this module you can mix async listeners and sync listeners, so you are not tied to the promise interface when you don't need it. Listeners that don't return a promise are just run in the normal sync fashion.
This module also supports the same argument passing behavior as node core's EventEmitter
. It is actually as close to a direct port for that as possible, including the performance optimizations.
By default handler functions are run in parallel. If you need to run them in a series the first argument of the emit function needs to be an object with the series
option passed.
var EventEmitter = ;var delay = ;var actual = ; var ee = ; // firstee; // secondee; // thirdee; // Emit an event and wait for it to completeee;
If you want to catch an error instead of it throwing a hard error then pass { catch: true }
into the emit options.