0
0
NodejsHow-ToBeginner · 3 min read

How to Create Custom Events in Node.js Easily

In Node.js, you create custom events by using the EventEmitter class from the events module. You define an event name and use emit() to trigger it, while listeners respond with on().
📐

Syntax

To create custom events, you first import EventEmitter from the events module. Then, create an instance of EventEmitter. Use on(eventName, listener) to listen for an event, and emit(eventName, args) to trigger it.

  • EventEmitter: Class to handle events.
  • on(): Registers a function to run when an event happens.
  • emit(): Triggers the event and calls listeners.
javascript
const EventEmitter = require('events');

const emitter = new EventEmitter();

// Listen for event
emitter.on('eventName', (arg1, arg2) => {
  // Handle event
});

// Trigger event
emitter.emit('eventName', 'arg1Value', 'arg2Value');
💻

Example

This example shows how to create a custom event called greet. When the event is emitted, the listener prints a greeting message with the provided name.

javascript
const EventEmitter = require('events');

const emitter = new EventEmitter();

// Register listener for 'greet' event
emitter.on('greet', (name) => {
  console.log(`Hello, ${name}! Welcome to Node.js events.`);
});

// Emit 'greet' event with a name
emitter.emit('greet', 'Alice');
Output
Hello, Alice! Welcome to Node.js events.
⚠️

Common Pitfalls

Common mistakes include:

  • Not creating an EventEmitter instance before using on() or emit().
  • Using different event names for on() and emit(), so listeners never trigger.
  • Forgetting to pass required arguments to emit() that listeners expect.

Always ensure event names match exactly and listeners are registered before emitting events.

javascript
const EventEmitter = require('events');

const emitter = new EventEmitter();

// Wrong: emitting before listener is registered
emitter.emit('start');

emitter.on('start', () => {
  console.log('Started');
});

// Right: register listener before emitting
emitter.on('ready', () => {
  console.log('Ready');
});
emitter.emit('ready');
Output
Ready
📊

Quick Reference

MethodDescription
EventEmitter()Creates a new event emitter instance
on(eventName, listener)Registers a listener function for an event
emit(eventName, ...args)Triggers an event and passes arguments to listeners
once(eventName, listener)Registers a listener that runs only once
removeListener(eventName, listener)Removes a specific listener

Key Takeaways

Use Node.js's built-in EventEmitter class to create and handle custom events.
Always register event listeners before emitting events to ensure they are caught.
Event names must match exactly between emit and on methods.
Pass any needed data as arguments when emitting events for listeners to use.
Use once() for listeners that should run only a single time.