AceDevHub
Intermediate Node.js Interview QuestionsIntermediateConcept

Node.js · Question 56

What is EventEmitter in Node.js?

Direct answer

EventEmitter is Node's pub/sub base class — on/once/emit/off for named events; streams, HTTP servers, and process extend it; decouple producers and consumers without direct callbacks.

Node's core is event-driven — EventEmitter is the primitive behind 'data', 'error', 'close', and custom domain events in services.

MethodBehavior
on(event, fn)Subscribe; fn runs on every emit
once(event, fn)Subscribe; auto-remove after first emit
emit(event, ...args)Sync invoke all listeners
off / removeListenerUnsubscribe specific fn
listenerCount(event)Debug listener buildup
  • extends EventEmitter — class JobQueue extends EventEmitter { emit('completed', id) }.
  • Sync emit — listeners run inline; heavy work in listener blocks emit caller.
  • error event — special: unhandled 'error' on emitter throws if no listener.
event-emitter.mjs
import { EventEmitter } from "node:events";

class ImportRunner extends EventEmitter {
  async run(file) {
    this.emit("start", file);
    // await upsert...
    this.emit("done", { file, count: 53 });
  }
}

const runner = new ImportRunner();
runner.on("done", ({ file, count }) => {
  console.log(`Imported ${file}: ${count} questions`);
});

await runner.run("nodejs-interview-questions.json");