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 givenns
; - if no
context
provided, remove a listener for givenns
andcallback
; - if
context
provided, removes a listener for givenns
,callback
andcontext
.
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.
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}