//
Busca en todas las páginas de la documentación
6 examples to get you started with EventEmitter - 4 basic and 2 intermediate.
import { EventEmitter } from 'node:events'.Register listeners and emit named events synchronously.
import { EventEmitter } from 'node:events';
const bus = new EventEmitter();
bus.on('ping', (ms: number) => console.log('pong', ms));
bus.emit('ping', 42);emit calls listeners synchronously on the same tick unless async listeners return Promises you handle separately.emit is true if listeners existed.Related: Domain Events vs EventEmitter - when to use a bus
Automatically remove listener after first invocation.
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('ready', () => console.log('startup complete'));
emitter.emit('ready');
emitter.emit('open' events on servers.once wraps on with auto off - avoids leak if event fires exactly once.on with explicit off in cleanup.Remove listeners when scope ends.
import { EventEmitter } from 'node:events';
const bus = new EventEmitter();
function handler(payload: string) {
console.log(payload);
}
bus.on('job', handler);
bus.off - anonymous functions cannot be removed without removeAllListeners.AbortSignal pattern for grouped cleanup (see memory leaks page).Raise limit when many listeners are intentional.
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(50);MaxListenersExceededWarning - signals possible leak.getMaxListeners() reads current setting.Related: Memory Leaks from Listeners - leak patterns
async listeners return Promises emit does not await.
import { EventEmitter } from 'node:events';
const bus = new EventEmitter();
bus.on('work', async () => {
await Promise.resolve();
console.log('done');
events.on async iterator with care.Type-safe events in TypeScript - full patterns on dedicated page.
import { EventEmitter } from 'node:events';
type Events = {
userCreated: [userId: string];
error: [err: Error];
};
class TypedBus extends EventEmitter {
Stack versions: This page was written for Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, and NestJS 11.