node package manager

ak-eventemitter

eventemitter with namespaces

ak-eventemitter

API

Constructor.

  • options Object
{
  'delimiter': '.' // used to delimite name spaces 
}

Adds an event listener.

  • ns String

Target namespace, wildcard is *, e.g chat.*

  • callback Function

function (ns, arg1, arg2, ...) {} see emit().

  • context Object [optional]

Context used when calling callback.

  • once Boolean [optional]

Privately used by once()

Same as on(), triggered only once (removed after first emit()).

Removes an event listener.

  • ns String [optional]

Target namespace, wildcard is *, e.g chat.*

  • callback Function [optional]

function (ns, arg1, arg2, ...) {} see emit().

  • context Object [optional]

Context used when calling callback.


  • If no ns provided, removes all listeners;
  • if no callback provided, removes all listeners for given ns;
  • if no context provided, remove a listener for given ns and callback;
  • if context provided, removes a listener for given ns, callback and context.

Emits an event.

  • ns String [optional]

Target namespace.

  • ... Mixed [optional]

Any argument given after ns will be passed to listener's callback. See examples.

See this CoderWall tip.

Examples

var ee = new EventEmitter();
 
ee.on('someevent', function (ns, val1, val2) {
  console.log(ns, val1, val2);
});
 
ee.emit('someevent', 123, 'abc'); // -> 'someevent', 123, 'abc' 
var ee = new EventEmitter();
 
ee.on('room.*', function (ns, data) {
  console.log(ns, data);
});
 
ee.emit('room.user.enter', 'john'); // -> 'room.user.enter', 'john' 
ee.emit('room.user.leave', 'john'); // -> 'room.user.leave', 'john' 
ee.emit('room.topic.update', 'JavaScript is awesome!'); // -> 'room.topic.update', 'JavaScript is awesome!' 
var ee = new EventEmitter();
 
ee.on('room.*', function (ns, data) {
  console.log(ns, data);
});
 
ee.once('room.user.enter', function (ns, user) {
  console.log('Hello ' + user + '! You\'re the first in!');
});
 
ee.emit('room.user.enter', 'john'); 
// -> 'room.user.enter', 'john' 
// -> 'Hello john! You're the first in!' 
 
ee.off('room.*');
 
ee.emit('room.user.leave', 'john'); // Nothing is logged (because we offed 'room.*') 
var ee = new EventEmitter();
var counter = {
  'enter': 0,
  'leave': 0
};
 
ee.on('room.user.enter', function (ns) {
  this.enter += 1;
}, counter);
 
ee.on('room.user.leave', function (ns) {
  this.leave += 1;
}, counter);
 
ee.emit('room.user.enter', 'john');
ee.emit('room.user.leave', 'mary');
ee.emit('room.user.enter', 'george');
ee.emit('room.user.enter', 'paul');
 
console.log(counter); // -> {'enter': 3, 'leave': 1}