What is eventemitter3?
The eventemitter3 package is a high-performance event emitter library that provides an interface for emitting and listening to events. It is a drop-in replacement for existing EventEmitter implementations with a focus on performance.
What are eventemitter3's main functionalities?
Emitting events
This feature allows you to emit events with a specified name and pass arguments to the event listeners.
const EventEmitter = require('eventemitter3');
const emitter = new EventEmitter();
emitter.on('greet', function(message) {
console.log(message);
});
emitter.emit('greet', 'Hello World!');
Listening to events
This feature allows you to add a listener for a specific type of event. The listener will be invoked when an event with that name is emitted.
const EventEmitter = require('eventemitter3');
const emitter = new EventEmitter();
emitter.on('greet', function(message) {
console.log(message);
});
Removing event listeners
This feature allows you to remove a specific listener from an event so that it no longer gets called when the event is emitted.
const EventEmitter = require('eventemitter3');
const emitter = new EventEmitter();
function onGreet(message) {
console.log(message);
}
emitter.on('greet', onGreet);
emitter.removeListener('greet', onGreet);
Once listeners
This feature allows you to add a one-time listener for an event. The listener will be invoked only the first time the event is emitted, after which it is removed.
const EventEmitter = require('eventemitter3');
const emitter = new EventEmitter();
emitter.once('greet', function(message) {
console.log('This will only be logged once:', message);
});
emitter.emit('greet', 'Hello World!');
emitter.emit('greet', 'Hello again!');
Other packages similar to eventemitter3
events
The 'events' package is Node.js's native event emitter implementation. It is very similar to eventemitter3 but may not be as optimized for performance.
mitt
Mitt is a tiny functional event emitter / pubsub. It offers the same core functionality as eventemitter3 but with a smaller footprint and a functional API.
wolfy87-eventemitter
Wolfy87's EventEmitter is an implementation of the EventEmitter module found in Node.js but can be used in the browser. It is larger in size compared to eventemitter3 and includes additional features like namespaces and wildcard listeners.
EventEmitter3
EventEmitter3 is a faster alternative to EventEmitter2 and the built-in
EventEmitter that ships within Node.js. It removes some features that you might
not need:
- Domain support.
- Thrown errors when there are no error listeners specified.
- That a
newListener
event is emitted when an event is emitted. - No silly
setMaxListeners
. - No silly
listenerCount
function.. Just do EventEmitter.listeners(event).length
And adds some features you want:
- Emit events with a custom context without binding:
EE.on(event, fn, context)
which also works with once EE.once(event, fn, context)
It's a drop in replacement of your existing EventEmitters, but just faster. Free
performance, who wouldn't want that?
The source of the EventEmitter is compatible for browser usage, no fancy pancy
Array.isArray
stuff is used, it's just plain ol JavaScript that should even
work IE5 if you want to. This module currently serves its use in
Primus's client file.
Installation
$ npm install --save eventemitter3
or as a component
$ component install eventemitter3
then
var EventEmitter = require('eventemitter3');
var EventEmitter = require('eventemitter3').EventEmitter;
For API methods see the official Node.js documentation:
http://nodejs.org/api/events.html