The Node.js Event emitter
If you worked with JavaScript in the browser, you know how much of the interaction of the user is handled through events: mouse clicks, keyboard button presses, reacting to mouse movements, and so on.
On the backend side, Node.js offers us the option to build a similar system using the events module.
This module, in particular, offers the EventEmitter class, which we'll use to handle our events.
You initialize that using
const = ('node:events');
const = new ();
This object exposes, among many others, the on and emit methods.
emitis used to trigger an eventonis used to add a callback function that's going to be executed when the event is triggered
For example, let's create a start event, and as a matter of providing a sample, we react to that by just logging to the console:
eventEmitter.on('start', () => {
.('started');
});
When we run
eventEmitter.emit('start');
the event handler function is triggered, and we get the console log.
You can pass arguments to the event handler by passing them as additional arguments to emit():
eventEmitter.on('start', => {
.(`started ${}`);
});
eventEmitter.emit('start', 23);
Multiple arguments:
eventEmitter.on('start', (, ) => {
.(`started from ${} to ${}`);
});
eventEmitter.emit('start', 1, 100);
The EventEmitter object also exposes several other methods to interact with events, like
once(): add a one-time listenerremoveListener()/off(): remove an event listener from an eventremoveAllListeners(): remove all listeners for an event
You can read more about these methods in the official documentation.