0.0.7 • Published 8 years ago
ak-eventemitter v0.0.7
ak-eventemitter
API
EventEmitter(options)
Constructor.
optionsObject
{
'delimiter': '.' // used to delimite name spaces
}on(ns, callback[, context, once])
Adds an event listener.
nsString
Target namespace, wildcard is *, e.g chat.*
callbackFunction
function (ns, arg1, arg2, ...) {} see emit().
contextObject optional
Context used when calling callback.
onceBooleanoptional
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.
nsString optional
Target namespace, wildcard is *, e.g chat.*
callbackFunction optional
function (ns, arg1, arg2, ...) {} see emit().
contextObject optional
Context used when calling callback.
- If no
nsprovided, removes all listeners; - if no
callbackprovided, removes all listeners for givenns; - if no
contextprovided, remove a listener for givennsandcallback; - if
contextprovided, removes a listener for givenns,callbackandcontext.
emit(ns, ...)
Emits an event.
nsString optional
Target namespace.
...Mixed optional
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}