Contenido

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:

  1. Creación de emisor const { EventEmitter } = require('events'); const myEmitter = new EventEmitter();

  2. Registrar un receptor myEmitter.on('sayHello', () => { console.log('hello'); } myEmitter.once('sayBye', () => { console.log('bye'); }

  3. Emitir evento myEmitter.emit('sayHello');

  4. Anular evento myEmitter.emit('sayHello');

Métodos comunes de instancias EventEmitter

  • addListener('name') || on('name'): Añade receptor para dicho evento
  • removeListener('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.