0
0
NodejsHow-ToBeginner · 3 min read

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 once when you want the listener to run multiple times.
  • Forgetting to pass arguments to emit that 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

MethodDescription
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.