node-eventasync
node.js event emitter monkey patch for supporting asynchronous listeners.
Install
$ npm install eventasync
Usage
To use eventasync, just require it like this:
const EventEmitter = EventEmitter;; const ev = ; ev;ev;
emitAsync
will call the registered listeners in parallel. emitAsyncSeq
will call the registered listeners in sequence. Both of them will return a Promise
so that caller function can evaluate the result (or error) by using Promise
interface.
For event listeners, if it is an async operation, you need to return a Promise
for that async operation.
emitAsync
uses Rx.Observable.mergeAll()
, and emitAsyncSeq
uses Rx.Observable.concatAll()
.
Examples
Here's an example for running all listeners in sequence:
const EventEmitter = EventEmitter;; const ev = ;evdata = ; const listener1 = { return { ; };} const listener2 = data; const listener3 = { return { ; };} ev;ev;ev; const promise = ev;promise;// data: [ 1, 2, 3, 4 ]
Here an example for running all listeners in parallel, while one of them throw an error:
const EventEmitter = EventEmitter;; const ev = ;evdata = ; const listener1 = { return { ; };} const listener2 = { return { ; };} const listener3 = data; ev;ev;ev; const promise = ev;promise;// Something is wrong! [ 3, 2 ]
License
MIT. See LICENSE.