aemitter

async emitter

Æmitter

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(datanext) {
  // 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