How to Use EventEmitter in Node.js: Simple Guide
In Node.js,
EventEmitter is a class that lets you create and handle custom events. You create an instance, register listeners with on, and trigger events with emit to run those listeners.Syntax
The EventEmitter class is imported from the events module. You create an instance, then use on(eventName, listener) to listen for events and emit(eventName, ...args) to trigger them.
EventEmitter: The class to create event handlers.on: Registers a function to run when an event happens.emit: Triggers the event and calls all listeners.
javascript
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.on('eventName', (arg1, arg2) => { // listener code here }); emitter.emit('eventName', 'arg1Value', 'arg2Value');
Example
This example shows how to create an event emitter, listen for a custom event called greet, and emit it with a name argument. The listener prints a greeting message.
javascript
const EventEmitter = require('events'); const emitter = new EventEmitter(); // Register a listener for 'greet' event emitter.on('greet', (name) => { console.log(`Hello, ${name}!`); }); // Emit the 'greet' event with argument emitter.emit('greet', 'Alice');
Output
Hello, Alice!
Common Pitfalls
Common mistakes include:
- Not registering listeners before emitting events, so nothing happens.
- Using
oncewhen you want the listener to run multiple times. - Forgetting to pass arguments to
emitthat listeners expect.
Also, avoid memory leaks by removing listeners if they are no longer needed.
javascript
const EventEmitter = require('events'); const emitter = new EventEmitter(); // Wrong: emitting before listener is added emitter.emit('data', 'test'); // No output // Right: add listener first emitter.on('data', (msg) => { console.log('Received:', msg); }); emitter.emit('data', 'test'); // Output: Received: test
Output
Received: test
Quick Reference
| Method | Description |
|---|---|
| on(event, listener) | Add a listener for an event |
| emit(event, ...args) | Trigger an event with arguments |
| once(event, listener) | Add a listener that runs once |
| removeListener(event, listener) | Remove a specific listener |
| removeAllListeners(event) | Remove all listeners for an event |
Key Takeaways
Create an EventEmitter instance to handle custom events in Node.js.
Use on() to listen and emit() to trigger events with optional arguments.
Always register listeners before emitting events to ensure they run.
Use once() for one-time listeners and remove listeners to prevent memory leaks.
EventEmitter helps organize asynchronous code by decoupling event producers and consumers.