MyInternships.in

Core Modules

Node.js events EventEmitter

EventEmitter implements the publish-subscribe pattern: an object emits named events and any number of listeners react. Streams, HTTP servers and many libraries are built on it.


What is events EventEmitter in Node.js?

EventEmitter implements the publish-subscribe pattern: an object emits named events and any number of listeners react. Streams, HTTP servers and many libraries are built on it.

events EventEmitter example

A custom emitter
JavaScript
import { EventEmitter } from 'node:events';

class JobQueue extends EventEmitter {
  add(job) {
    this.emit('added', job);
    setTimeout(() => this.emit('done', job), 1000);
  }
}

const queue = new JobQueue();
queue.on('added', job => console.log('queued', job.id));
queue.once('done', job => console.log('finished', job.id));   // fires once
queue.on('error', err => console.error(err));                  // essential

queue.add({ id: 'a1' });

How this works

An "error" event with no listener is a special case: Node throws it and the process exits. Always attach an error listener to any emitter you create or consume.

Key points to remember

  • on adds a listener, once adds a one-shot listener, off removes one.
  • Listeners run synchronously in the order they were registered.
  • The default warning at eleven listeners usually indicates a leak.

Common mistakes with events EventEmitter

  • No "error" listener, which crashes the process.
  • Adding a listener inside a loop or request handler without removing it.

Node.js events EventEmitter— Interview Questions & FAQs

Why does Node warn about a possible EventEmitter memory leak?+

More than ten listeners were added for the same event, usually because listeners are registered repeatedly without being removed. Remove them with off, or raise the limit deliberately with setMaxListeners.

Related Node.js Topics

Keep learning with these closely related lessons.

Ready to use your Node.js skills?

Find verified Node.js internships and fresher developer jobs across India.

Browse Node.js Internships