EventEmitter
EventEmitter powers Node's event-driven style: things emit named events and others listen.
In this page:
Syntax
const EventEmitter = require('events');
class ClassName extends EventEmitter {
method() {
this.emit('eventName', value);
}
}
const obj = new ClassName();
obj.on('eventName', (value) => {
// handle event
});
EventEmitter
Extend EventEmitter to make your own event-producing classes. Listeners run synchronously in the order added. Use once for one-time events and remove listeners to avoid leaks. The events.once helper returns a promise for the next event.
Note:
Extending EventEmitter lets your class expose events like data or done.
Example: EventEmitter
const EventEmitter = require("events");
class Downloader extends EventEmitter {
start() {
this.emit("start");
setTimeout(() => this.emit("done", { bytes: 1024 }), 5);
}
}
const d = new Downloader();
d.on("start", () => console.log("started"));
d.on("done", (info) => console.log("done, bytes:", info.bytes));
d.start();
// Output:
// started
// done, bytes: 1024
⚠️ Run this in your own terminal or Node.js environment.
Related Topics
Common Mistakes
- Forgetting to call super() in the constructor
- Adding a listener on every request
- Emitting before listeners are attached
Chapter Summary
- Extend EventEmitter for custom events
- Listeners run synchronously
- once and off manage listeners
- events.once returns a promise
🔒
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: