0
0
Node.jsframework~5 mins

Emitting and listening for events in Node.js

Choose your learning style9 modes available
Introduction

Events let parts of your program talk to each other. You send out a signal (emit) and other parts can hear it (listen) and react.

You want to run some code when a file finishes loading.
You want to update the screen when new data arrives.
You want to log a message when a user logs in.
You want to handle errors in a central place.
You want to trigger multiple actions after a button click.
Syntax
Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Listen for an event
myEmitter.on('eventName', (data) => {
  // code to run when event happens
});

// Emit the event
myEmitter.emit('eventName', eventData);

Use on to listen for events.

Use emit to send out events.

Examples
This example listens for a 'ping' event and prints a message when it happens.
Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Example 1: Simple event with no data
myEmitter.on('ping', () => {
  console.log('Ping received');
});
myEmitter.emit('ping');
This example sends a name with the event and the listener uses it.
Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Example 2: Event with data
myEmitter.on('greet', (name) => {
  console.log(`Hello, ${name}!`);
});
myEmitter.emit('greet', 'Alice');
Shows that many listeners can respond to the same event.
Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Example 3: Multiple listeners for one event
myEmitter.on('alert', () => {
  console.log('Alert listener 1');
});
myEmitter.on('alert', () => {
  console.log('Alert listener 2');
});
myEmitter.emit('alert');
If no one listens, emitting does nothing and causes no error.
Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Example 4: No listeners for event
myEmitter.emit('noListener');
Sample Program

This program shows how to listen for an event and emit it with data. It prints messages before and after emitting to show the order.

Node.js
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Print before emitting
console.log('Before emitting event');

// Listen for 'dataReceived' event
myEmitter.on('dataReceived', (data) => {
  console.log(`Data received: ${data}`);
});

// Emit the event with some data
myEmitter.emit('dataReceived', 'Hello World');

// Print after emitting
console.log('After emitting event');
OutputSuccess
Important Notes

Emitting an event runs all listeners in the order they were added.

Listeners run synchronously by default, so code after emit runs after listeners finish.

Common mistake: forgetting to add a listener before emitting the event.

Use events to decouple parts of your program so they don't need to know about each other directly.

Summary

Events let parts of your program communicate by sending and receiving signals.

Use on to listen and emit to send events.

Listeners run in order and receive any data sent with the event.