0.0.7 • Published 7 years ago

ak-eventemitter v0.0.7

Weekly downloads
5
License
MIT
Repository
github
Last release
7 years ago

ak-eventemitter

API

EventEmitter(options)

Constructor.

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

on(ns, callback[, context, once])

Adds an event listener.

  • ns String

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

  • callback Function

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

Context used when calling callback.

Privately used by once()

once(ns, callback, context)

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

off([ns, callback, context])

Removes an event listener.

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

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

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.

emit(ns, ...)

Emits an event.

Target namespace.

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

Inheritance

See this CoderWall tip.

Examples

Example 1: simple event

var ee = new EventEmitter();

ee.on('someevent', function (ns, val1, val2) {
  console.log(ns, val1, val2);
});

ee.emit('someevent', 123, 'abc'); // -> 'someevent', 123, 'abc'

Example 2: wildcard event

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!'

Example 3: on, once, off

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.*')

Example 4: context

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}