46
loading...
This website collects cookies to deliver better user experience
EventEmitter
class and expose an eventEmitter.on()
function so functions can be attached to the named events. Event names are typically camel-cased.events
module exports an EventEmitter
constructor, depending on the Node version the events
module is the EventEmitter
or you have to deconstruct it.const EventEmitter = require('events');
EventEmitter
is a constructor
and to create a new event emitter the constructor has to be called with the new
keyword.const myEmitter = new EventEmitter();
EventEmitter
is inheritance. Look at this article for a refresher on Inheritance in Javascript.class MyEmitter extends EventEmitter {
constructor(opts = {}) {
super(opts);
this.name = opts.name;
}
}
on
and emit
.emit
is used to trigger an event.on
is used to add a callback function.emit
method has to be called:const EventEmitter = require('events');
const myEmitter = new EventEmitter();
myEmitter.emit('event');
emit
is the event namespace. We need to know the event namespace to be able to listen to emitted events.eventEmitter.emit()
method allows an arbitrary set of arguments to be passed to the listener functions, like myEmitter.emit('event', 'a', 'b');
const EventEmitter = require('events')
class MyEmitter extends EventEmitter {
constructor (opts = {}) {
super(opts);
this.name = opts.name;
},
destroy (err) {
if (err) { this.emit('error', err) }
this.emit('close');
}
}
addListener
or the alias on
.const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('close', () => {
console.log('close event fired!');
});
eventEmitter.emit('close');
close event fired!
.emit
are received by the listener.const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('add', (a, b) => {
console.log('add event fired!');
console.log(a + b);
});
eventEmitter.emit('add', 1, 2);
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('my-event', () => {
console.log('1st');
});
eventEmitter.on('my-event', () => {
console.log('2nd');
});
eventEmitter.emit('my-event');
1st
and then 2nd
.prependListener
.const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('my-event', () => {
console.log('1st');
});
eventEmitter.prependListener('my-event', () => {
console.log('2nd');
});
eventEmitter.emit('my-event');
2nd
and then 1st
.once
method can be used. It removes its listener after it has been called.const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.once('event', () => {
console.log('event fired');
});
eventEmitter.emit('event');
eventEmitter.emit('event');
event fired
will only be logged once.removeListener
method. It takes two arguments the event name, and the listener function.const callback = stream => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener()
will remove, at most, one instance of a listener from the listener array. If a single listener has been added multiple times for the specified eventName, then removeListener()
must be called multiple times to remove each instance.removeAllListeners
method can be used to remove listeners without having a reference to their function. It takes one optional argument, the event name. It is useful if multiple listener for the same event name have been registered.error
event on an event emitter will cause the event emitter to throw an exception if a listener for the error
event has not been registered.eventEmitter
is a constructor method.emit
method has to be used with an event name as an argument.on
or addEventListener
can be used with the event name.