An asynchronous event emitter for node.js and the browser. Heavily inspired by component/emitter.
Using component:
component install matthewmueller/aemitter
Using node.js:
npm install aemitter
var Emitter = require('aemitter');
var user = { name: 'matt' };
Emitter(user);
user.on('save', function(data, next) {
// save data
next()
});
user.emit('save', data, function(err) {
// called after all `save` callbacks have completed
});
Register an event
handler fn
. The signature of fn
will be all the arguments emitted + the next(err)
function. If this function is not specified, Emitter#on
will immediately return.
user.on('save', function(next) {
// asynchronous, will wait for `next` to be called
});
user.on('save', function() {
// immediately returns
})
user.emit('save');
It's important to note that next
will be passed as the last argument. If Emitter#emit
passes four arguments, next
will be it's fifth.
Register a single-shot event
handler fn
,
removed immediately after it is invoked the
first time.
Remove event
handler fn
, or pass only the event
name to remove all handlers for event
.
Emit an event
with variable option args, and a final, optional callback fn
. This fn
will be called when all the event callbacks have finished.
Caveat: You will need to be consistent with the emit
signature, otherwise Emitter#on()
callbacks will be inconsistent and likely fail. For example:
user.emit('save', data, message, fn); // main signature
user.emit('save', data, fn); // will NOT work as expected
user.emit('save', data, '', fn); // will work as expected
user.emit('save', data, ''); // will also work as expected
Return an array of callbacks, or an empty array.
Check if this emitter has event
handlers.
npm install .
mocha test
MIT