Beginner Fundamentals
Events and EventEmitter
Much of Node.js is built around events. The events module provides the EventEmitter class, which lets objects emit named events and run listeners when those events happen.
Creating an emitter
const EventEmitter = require("events");
const emitter = new EventEmitter();
// Listen for an event
emitter.on("greet", (name) => {
console.log(`Hello, ${name}!`);
});
// Emit the event
emitter.emit("greet", "Fausto"); // Hello, Fausto!
on and emit
on(event, listener)registers a function to run when the event fires.emit(event, ...args)fires the event and passes arguments to listeners.
Multiple listeners
You can attach several listeners to the same event, and all of them run:
const EventEmitter = require("events");
const emitter = new EventEmitter();
emitter.on("data", () => console.log("Listener 1"));
emitter.on("data", () => console.log("Listener 2"));
emitter.emit("data");
// Listener 1
// Listener 2
once
Use once to run a listener only the first time:
emitter.once("start", () => console.log("Runs only once"));
Summary
The EventEmitter is the core pattern behind streams, servers, and many Node.js APIs. Master on and emit and you understand how Node reacts to things happening.