ak-eventemitter
API
EventEmitter(options)
Constructor.
{
'delimiter': '.'
}
on(ns, callback[, context, once])
Adds an event listener.
Target namespace, wildcard is *
, e.g chat.*
function (ns, arg1, arg2, ...) {}
see emit()
.
context
Object [optional]
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.*
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
.
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');
Example 2: wildcard event
var ee = new EventEmitter();
ee.on('room.*', function (ns, data) {
console.log(ns, data);
});
ee.emit('room.user.enter', 'john');
ee.emit('room.user.leave', 'john');
ee.emit('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');
ee.off('room.*');
ee.emit('room.user.leave', 'john');
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);