Cómo trabajar con eventos personalizados en Node
Si trabajó con JavaScript en el navegador, sabrá qué parte de la interacción del usuario se maneja a través de eventos: clics del mouse, pulsaciones de botones del teclado, reacción a los movimientos del mouse, etc.
En el lado del backend, Node nos ofrece la opción de construir un sistema similar usando elevents
módulo.
Este módulo, en particular, ofrece laEventEmitter
class, que usaremos para manejar nuestros eventos.
Inicializa un objeto EventEmitter usando esta sintaxis:
const EventEmitter = require('events')
const eventEmitter = new EventEmitter()
Este objeto expone, entre muchos otros, elon
yemit
métodos.
emit
se utiliza para desencadenar un eventoon
se usa para agregar una función de devolución de llamada que se ejecutará cuando se active el evento
Emite y escucha eventos
Por ejemplo, creemos unstart
evento, y como una cuestión de proporcionar una muestra, reaccionamos a eso simplemente iniciando sesión en la consola:
eventEmitter.on('start', () => {
console.log('started')
})
Cuando corremos
eventEmitter.emit('start')
se activa la función del controlador de eventos y obtenemos el registro de la consola.
addListener()
es un alias paraon()
, en caso de que veas que se usa.
Pasando argumentos al evento
Puede pasar argumentos al controlador de eventos pasándolos como argumentos adicionales aemit()
:
eventEmitter.on('start', (number) => {
console.log(`started ${number}`)
})
eventEmitter.emit(‘start’, 23)
Múltiples argumentos:
eventEmitter.on('start', (start, end) => {
console.log(`started from ${start} to ${end}`)
})
eventEmitter.emit(‘start’, 1, 100)
Escuche un evento solo una vez
El objeto EventEmitter también expone elonce()
método, que puede utilizar para crear un detector de eventos de una sola vez.
Una vez que se activa ese evento, el oyente deja de escuchar.
Ejemplo:
eventEmitter.once('start', () => {
console.log(`started!`)
})
eventEmitter.emit(‘start’)
eventEmitter.emit(‘start’) //not going to fire
Eliminar un detector de eventos
Una vez que crea un detector de eventos, puede eliminarlo usando elremoveListener()
método.
Para hacerlo, primero debemos tener una referencia a la función de devolución de llamada deon
.
En este ejemplo:
eventEmitter.on('start', () => {
console.log('started')
})
Extraiga la devolución de llamada:
const callback = () => {
console.log('started')
}
eventEmitter.on(‘start’, callback)
Para que luego puedas llamar
eventEmitter.removeListener('start', callback)
También puede eliminar todos los oyentes a la vez en un evento, usando:
eventEmitter.removeAllListeners('start')
Registrar los eventos
loseventNames()
El método, llamado en una instancia de objeto EventEmitter, devuelve una matriz de cadenas que representan los eventos registrados en el EventListener actual:
const EventEmitter = require('events')
const eventEmitter = new EventEmitter()
eventEmitter.on(‘start’, () => {
console.log(‘started’)
})
eventEmitter.eventNames() // [ ‘start’ ]
listenerCount()
devuelve el recuento de oyentes del evento pasado como parámetro:
eventEmitter.listenerCount('start') //1
Agregar más oyentes antes / después de otros
Si tiene varios oyentes, el orden de ellos puede ser importante.
Una instancia de objeto EventEmitter ofrece algunos métodos para trabajar con orden.
emitter.prependListener()
Cuando agrega un oyente usandoon
oaddListener
, se agrega en último lugar en la cola de oyentes y se llama en último lugar. UsandoprependListener
se agrega y se llama antes que otros oyentes.
emitter.prependOnceListener()
Cuando agrega un oyente usandoonce
, se agrega en último lugar en la cola de oyentes y se llama en último lugar. UsandoprependOnceListener
se agrega y se llama antes que otros oyentes.
Descarga mi gratisManual de Node.js
Más tutoriales de nodos:
- Una introducción al administrador de paquetes npm
- Introducción a Node.js
- Solicitudes HTTP usando Axios
- Dónde alojar una aplicación Node.js
- Interactuar con la API de Google Analytics usando Node.js
- El corredor de paquetes de nodo npx
- La guía package.json
- ¿Dónde instala npm los paquetes?
- Cómo actualizar Node.js
- Cómo usar o ejecutar un paquete instalado usando npm
- El archivo package-lock.json
- Control de versiones semántico usando npm
- ¿Deberías enviar la carpeta node_modules a Git?
- Actualice todas las dependencias de Node a su última versión
- Analizando JSON con Node.js
- Encuentre la versión instalada de un paquete npm
- Secuencias de Node.js
- Instale una versión anterior de un paquete npm
- Obtener la carpeta actual en el nodo
- Cómo registrar un objeto en Node
- Exponer la funcionalidad de un archivo de nodo mediante exportaciones
- Diferencias entre el nodo y el navegador
- Hacer una solicitud HTTP POST usando Node
- Obtener datos del cuerpo de la solicitud HTTP usando Node
- Búferes de nodo
- Una breve historia de Node.js
- Cómo instalar Node.js
- ¿Cuánto JavaScript necesita saber para usar Node?
- Cómo usar el REPL de Node.js
- Nodo, acepta argumentos de la línea de comando
- Salida a la línea de comando usando Node
- Acepte la entrada de la línea de comando en el nodo
- Desinstalación de paquetes npm con `npm uninstall`
- paquetes locales o globales de npm
- dependencias npm y devDependencies
- El ciclo de eventos de Node.js
- Entendiendo process.nextTick ()
- Entendiendo setImmediate ()
- El emisor de eventos de nodo
- Construye un servidor HTTP
- Realización de solicitudes HTTP con Node
- El módulo Node fs
- Solicitudes HTTP en Node usando Axios
- Leer archivos con Node
- Rutas de archivo de nodo
- Escribir archivos con Node
- Estadísticas de archivos de nodo
- Trabajar con descriptores de archivo en Node
- Trabajar con carpetas en Node
- El módulo de ruta de nodo
- El módulo http de nodo
- Usando WebSockets con Node.js
- Los conceptos básicos para trabajar con MySQL y Node
- Manejo de errores en Node.js
- La guía Pug
- Cómo leer variables de entorno de Node.js
- Cómo salir de un programa de Node.js
- El módulo Node os
- El módulo de eventos de nodo
- Nodo, la diferencia entre desarrollo y producción
- Cómo comprobar si existe un archivo en Node.js
- Cómo crear un archivo vacío en Node.js
- Cómo eliminar un archivo con Node.js
- Cómo obtener la última fecha de actualización de un archivo usando Node.js
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo escribir un objeto JSON en un archivo en Node.js
- ¿Por qué debería usar Node.js en su próximo proyecto?
- Ejecute un servidor web desde cualquier carpeta
- Cómo usar MongoDB con Node.js
- Utilice Chrome DevTools para depurar una aplicación Node.js
- ¿Qué es pnpm?
- La lista de opciones de Node.js Runtime v8
- Cómo corregir el error "Falta acceso de escritura" al usar npm
- Cómo habilitar los módulos ES en Node.js
- Cómo generar un proceso hijo con Node.js
- Cómo obtener tanto el cuerpo analizado como el cuerpo crudo en Express
- Cómo manejar la carga de archivos en Node.js
- ¿Qué son las dependencias entre pares en un módulo de nodo?
- Cómo escribir un archivo CSV con Node.js
- Cómo leer un archivo CSV con Node.js
- Los módulos principales del nodo
- Incrementar varios números de carpetas a la vez usando Node.js
- Cómo imprimir un lienzo en una URL de datos
- Cómo crear y guardar una imagen con Node.js y Canvas
- Cómo descargar una imagen usando Node.js
- Cómo cambiar el nombre de archivos en masa en Node.js
- Cómo obtener los nombres de todos los archivos en una carpeta en Node
- Cómo usar promesas y esperar con las funciones basadas en devolución de llamada de Node.js
- Cómo probar un paquete npm localmente
- Cómo verificar la versión actual de Node.js en tiempo de ejecución
- Cómo utilizar Sequelize para interactuar con PostgreSQL
- Sirve una página HTML con Node.js
- Cómo resolver el error `util.pump is not a function` en Node.js