Manejando eventos personalizados con Node.js
Otras de las grandes características de Node.js es la facilidad con la que puedes trabajar con eventos y facilitar así la comunicación entre objetos.
Además, debes saber que muchos módulos de la API de Node.js (built-in modules) y externos heredan de EventEmitter.
Los eventos en Node.js son implementados por el módulo Events.
¿Como funcionan los eventos?
Para entender su funcionamiento es clave comprender los 2 actores principales que intervienen en este juego:
-
Emisor:
- Emite eventos de nombre.
- Registro y anulación de funciones de escucha.
-
Receptor:
- Recibe eventos de nombre.
- Gestión de la lógica necesaria.
El concepto es bastante simple, un emisor puede emitir un evento de nombres y uno, o varios, receptores lo escucharán para realizar las acciones necesarias dentro de la aplicación. Esa es la gran ventaja que aportan los eventos, puedes construir una aplicación reactiva de una forma más o menos sencilla.
Ejemplos:
-
Creación de emisor
const { EventEmitter } = require('events'); const myEmitter = new EventEmitter();
-
Registrar un receptor
myEmitter.on('sayHello', () => { console.log('hello'); } myEmitter.once('sayBye', () => { console.log('bye'); }
-
Emitir evento
myEmitter.emit('sayHello');
-
Anular evento
myEmitter.emit('sayHello');
Métodos comunes de instancias EventEmitter
addListener('name')
||on('name')
: Añade receptor para dicho eventoremoveListener('name')
||off('name')
: Elimina receptor para dicho evento.once('name')
: Añade un receptor para un evento una sola vez.emit('name')
: Emite un evento con dicho nombre.listenerCount('name')
: Devuelve el número de oyentes para un evento.rawListener('name')
: Devuelve una copia del array de oyentes.