Basic events emitter implementation
Typically, there are no strict restrictions on event names, as any string will be accepted. Usually it's a lowercase string with no spaces. Possible values:
click
, move
, focus:item
.Functions can then be attached to objects, to be executed when an event is emitted. These functions are called listeners. Inside a listener function, this refers to the
Emitter
that the listener was attached to.Installation ##
npm install cjs-emitter
Usage ##
Add the constructor to the scope:var Emitter = require('cjs-emitter');
Create an instance:
var emitter = new Emitter();
Add listeners for some events:
emitter.addListener('click', function ( data ) { /* ... */ });
emitter.addListener('click', function ( data ) { /* ... */ });
Add listener that will be notified only one time:
emitter.once('click', function ( data ) { /* ... */ });
Add multiple listeners at once:
emitter.addListeners({
click: function ( data ) {},
close: function ( data ) {}
});
Remove all instances of the given callback:
emitter.removeListener('click', func1);
Remove all callbacks for the given event name:
emitter.removeListener('click');
Clears all events:
emitter.removeListener();
Execute each of the listeners in the given order with the supplied arguments:
emitter.emit('init');
emitter.emit('click', {src: panel1, dst: panel2});
emitter.emit('load', error, data);
Performance notes ##
It's a good idea to emit events only when there are some listeners:if ( emitter.events['click'] ) {
// notify listeners
emitter.emit('click', {event: event});
}
Development mode ##
There is a global var DEVELOP
which activates additional consistency checks and protection logic not available in release mode.
Contribution ##
If you have any problems or suggestions please open an issue according to the contribution rules.License ##
cjs-emitter
is released under the MIT License.