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.
| Method | Behavior |
|---|---|
| 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 / removeListener | Unsubscribe 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");