Loading lessons...
Event Emitter & Event-Driven Architecture
The EventEmitter Pattern
Many core Node.js objects (HTTP server, Streams, Sockets) inherit from the EventEmitter class in the node:events module.
Creating an EventEmitter
const EventEmitter = require("node:events");
class UserOrderEmitter extends EventEmitter {}
const orderSystem = new UserOrderEmitter();
// Register event listener
orderSystem.on("orderPlaced", (orderId, amount) => {
console.log(`[EMAIL] Receipt sent for Order #${orderId} ($ ${amount})`);
});
// Register one-time listener
orderSystem.once("systemStart", () => {
console.log("System initialized!");
});
// Emit events
orderSystem.emit("systemStart");
orderSystem.emit("orderPlaced", 1001, 149.99);
orderSystem.emit("orderPlaced", 1002, 89.50);
TL;DR
- Use
emitter.on('event', callback)to subscribe to events. - Use
emitter.once('event', callback)for single-fire handlers. - Emit events synchronously via
emitter.emit('event', ...args).