EventEmitter class offers two methods using which you can remove event listeners:
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.
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.