How to remove event listeners in Node.js?

EventEmitter class offers two methods using which you can remove event listeners:

1. eventEmitter.removeListener() method

If you want to remove a particular event handler, use the removeListener() method. The removeListener() method accepts two arguments, event name, and listener.

eventEmitter.removeListener('event-name', listener);

Here is how you remove an event listener in Node.js.

const EventEmitter = require('events');

let eventEmitter = new EventEmitter();

const listener1 = () => {
  console.log('Listener 1');
};

const listener2 = () => {
  console.log('Listener 2');
};

const listener3 = () => {
  console.log('Listener 3');
};

//register event listeners
eventEmitter.on('my-event', listener1);
eventEmitter.on('my-event', listener2);
eventEmitter.on('my-event', listener3);

//remove listener2
eventEmitter.removeListener('my-event', listener2);

//trigger an event
eventEmitter.emit('my-event');

Output

Listener 1
Listener 3

As you can see that when you call the removeListener() method, it removes the listener2 from the list of listeners who subscribed to that event.

2. eventEmitter.removeAllListeners() method

The removeAllListeners() method removes all the listeners who have subscribed to the event. It takes the event name as the argument.

Here is how you remove all event listeners in Node.js.

const EventEmitter = require('events');

let eventEmitter = new EventEmitter();

const listener1 = () => {
  console.log('Listener 1');
};

const listener2 = () => {
  console.log('Listener 2');
};

const listener3 = () => {
  console.log('Listener 3');
};

//register event listeners
eventEmitter.on('my-event', listener1);
eventEmitter.on('my-event', listener2);
eventEmitter.on('my-event', listener3);

//remove listener2
eventEmitter.removeAllListeners('my-event');

console.log('Before event is triggerd.');
eventEmitter.emit('my-event');
console.log('After event is triggerd.');

Output

Before event is triggerd.
After event is triggerd.

Recommended Posts