1.5.0 • Published 10 years ago
async-glob-events v1.5.0
async-glob-events.js
Event emitter with glob support on event names and asynchronous listeners, for node and the browser
Features
- Inherits all features from glob-events
- Pass a callback as the last argument to
emitand receive asynchronous errors and return values from listeners - 100% test coverage
Install with npm
npm install async-glob-eventsBrowser support
Use Browserify to create a standalone file.
Usage
var AsyncEmitter = require('async-glob-events').AsyncEmitter;
var asyncEmitter = new AsyncEmitter();
asyncEmitter.on('add', function (a, b, callback) {
setTimeout(function () {
callback(null, a + b);
}, 100);
});
asyncEmitter.emit('add', 3, 4, function (err, value) {
assert.equal(value, 7);
});Listeners may also return value immediately:
asyncEmitter.on('add', function (a, b) {
return a + b;
});This makes it possible to change an implementation from synchronous to asynchronous without modifying the caller.
The callback passed to emit is only invoked once all invoked listeners
returned.
AsyncEmitter API
The API is identical to glob-events with these additions:
emit(event[, ...], callback)will invoke the given callback once all listeners yielded. The callback is called with(err, value).emit({ event : 'name', allResults : true }[, ...], callback)retrieves an array with all non-undefinedreturn values of all listeners.invoke(iterator, scope[, callback])is an async override of the glob-events implementation. The given callback is invoked once all listeners yielded.this.callback()in listeners returns a callback which has to be invoked foremitto yield.this.callbackis a listen instance.
License
MIT