The Node events module
The events module of Node.js provides the EventEmitter class
The events
module provides us the EventEmitter class, which is key to working with events in Node.
I published a full article on that, so here I will just describe the API without further examples on how to use it.
const EventEmitter = require('events')
const door = new EventEmitter()
The event listener eats its own dog food and uses these events:
newListener
when a listener is addedremoveListener
when a listener is removed
Here’s a detailed description of the most useful methods:
- emitter.addListener()
- emitter.emit()
- emitter.eventNames()
- emitter.getMaxListeners()
- emitter.listenerCount()
- emitter.listeners()
- emitter.off()
- emitter.on()
- emitter.once()
- emitter.prependListener()
- emitter.prependOnceListener()
- emitter.removeAllListeners()
- emitter.removeListener()
- emitter.setMaxListeners()
emitter.addListener()
Alias for emitter.on()
.
emitter.emit()
Emits an event. It synchronously calls every event listener in the order they were registered.
emitter.eventNames()
Return an array of strings that represent the events registered on the current EventListener:
door.eventNames()
emitter.getMaxListeners()
Get the maximum amount of listeners one can add to an EventListener object, which defaults to 10 but can be increased or lowered by using setMaxListeners()
door.getMaxListeners()
emitter.listenerCount()
Get the count of listeners of the event passed as parameter:
door.listenerCount('open')
emitter.listeners()
Gets an array of listeners of the event passed as parameter:
door.listeners('open')
emitter.off()
Alias for emitter.removeListener()
added in Node 10
emitter.on()
Adds a callback function that’s called when an event is emitted.
Usage:
door.on('open', () => {
console.log('Door was opened')
})
emitter.once()
Adds a callback function that’s called when an event is emitted for the first time after registering this. This callback is only going to be called once, never again.
const EventEmitter = require('events')
const ee = new EventEmitter()
ee.once('my-event', () => {
//call callback function once
})
emitter.prependListener()
When you add a listener using on
or addListener
, it’s added last in the queue of listeners, and called last. Using prependListener
it’s added, and called, before other listeners.
emitter.prependOnceListener()
When you add a listener using once
, it’s added last in the queue of listeners, and called last. Using prependOnceListener
it’s added, and called, before other listeners.
emitter.removeAllListeners()
Removes all listeners of an event emitter object listening to a specific event:
door.removeAllListeners('open')
emitter.removeListener()
Remove a specific listener. You can do this by saving the callback function to a variable, when added, so you can reference it later:
const doSomething = () => {}
door.on('open', doSomething)
door.removeListener('open', doSomething)
emitter.setMaxListeners()
Sets the maximum amount of listeners one can add to an EventListener object, which defaults to 10 but can be increased or lowered.
door.setMaxListeners(50)
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025