Node.js usa el módulo de eventos para crear y manejar eventos personalizados. La clase EventEmitter se puede usar para crear y manejar el módulo de eventos personalizados.
La sintaxis para importar el módulo de eventos se proporciona a continuación:
Sintaxis:
const EventEmitter = require('events');
Todos los EventEmitters emiten el evento newListener cuando se agregan nuevos oyentes y removeListener cuando se eliminan los oyentes existentes. También proporciona una opción más:
captura booleanaRechazos
Default Value: false It automatically captures rejections.
Escuchar eventos: Antes de emitir cualquier evento, debe registrar funciones (callbacks) para escuchar los eventos.
Sintaxis:
eventEmitter.addListener(event, listener) eventEmitter.on(event, listener)
eventEmitter.on(event, listener) y eventEmitter.addListener(event, listener) son bastante similares. Agrega el oyente al final de la array de oyentes para el evento especificado. Múltiples llamadas al mismo evento y oyente agregarán el oyente varias veces y, en consecuencia, se activarán varias veces. Ambas funciones devuelven emitter, por lo que las llamadas se pueden enstringr.
Emisión de eventos: cada evento se denomina evento en nodejs. Podemos desenstringr un evento mediante la función emit(event, [arg1], [arg2], […]). Podemos pasar un conjunto arbitrario de argumentos a las funciones de escucha.
Sintaxis:
eventEmitter.emit(event, [arg1], [arg2], [...])
Ejemplo:
// Importing events const EventEmitter = require('events'); // Initializing event emitter instances var eventEmitter = new EventEmitter(); // Registering to myEvent eventEmitter.on('myEvent', (msg) => { console.log(msg); }); // Triggering myEvent eventEmitter.emit('myEvent', "First event");
Producción:
First event
Eliminación de Listener: eventEmitter.removeListener () toma dos eventos de argumento y listener, y elimina ese listener de la array de listeners que está suscrita a ese evento. Mientras que eventEmitter.removeAllListeners() elimina todos los oyentes de la array que están suscritos al evento mencionado.
Sintaxis:
eventEmitter.removeListener(event, listener) eventEmitter.removeAllListeners([event])
Ejemplo:
// Importing events const EventEmitter = require('events'); // Initializing event emitter instances var eventEmitter = new EventEmitter(); var geek1= (msg) => { console.log("Message from geek1: " + msg); }; var geek2 = (msg) => { console.log("Message from geek2: " + msg); }; // Registering geek1 and geek2 eventEmitter.on('myEvent', geek1); eventEmitter.on('myEvent', geek1); eventEmitter.on('myEvent', geek2); // Removing listener geek1 that was // registered on the line 13 eventEmitter.removeListener('myEvent', geek1); // Triggering myEvent eventEmitter.emit('myEvent', "Event occurred"); // Removing all the listeners to myEvent eventEmitter.removeAllListeners('myEvent'); // Triggering myEvent eventEmitter.emit('myEvent', "Event occurred");
Producción:
Message from geek1: Event occurred Message from geek2: Event occurred
Registramos dos veces geek1 y una vez geek2. Para llamar a eventEmitter.removeListener(‘myEvent’, geek1) se eliminará una instancia de geek1. Finalmente, eliminando todos los oyentes usando el método removeAllListeners() que eliminará todos los oyentes de myEvent.
Eventos especiales: todas las instancias de EventEmitter emiten el evento ‘newListener’ cuando se agregan nuevos oyentes y se eliminan los oyentes existentes ‘removeListener’ .
- Evento: ‘newListener’ La instancia de EventEmitter emitirá su propio evento ‘newListener’ antes de agregar un detector a su array interna de detectores. Los oyentes registrados para el evento ‘newListener’ pasarán al nombre del evento y la referencia al oyente que se agrega. El evento ‘newListener’ se activa antes de agregar el oyente a la array.
eventEmitter.once( 'newListener', listener) eventEmitter.on( 'newListener', listener)
- Evento: ‘removeListener’ El evento ‘removeListener’ se emite después de eliminar un oyente.
eventEmitter.once( ‘removeListener’, listener) eventEmitter.on( 'removeListener’, listener)
- Evento: ‘error’ Cuando ocurre un error dentro de una instancia de EventEmitter, la acción típica es que se emita un evento de ‘error’ . Si un EventEmitter no tiene al menos un agente de escucha registrado para el evento de «error» y se emite un evento de «error», se genera el error, se imprime un seguimiento de la pila y se cierra el proceso de Node.js.
eventEmitter.on('error', listener)
Ejemplo:
// Importing events const EventEmitter = require('events'); // Initializing event emitter instances var eventEmitter = new EventEmitter(); // Register to error eventEmitter.on('error', (err) => { console.error('Attention! There was an error'); }); // Register to newListener eventEmitter.on( 'newListener', (event, listener) => { console.log(`The listener is added to ${event}`); }); // Register to removeListener eventEmitter.on( 'removeListener', (event, listener) => { console.log(`The listener is removed from ${event}`); }); // Declaring listener geek1 to myEvent1 var geek1 = (msg) => { console.log("Message from geek1: " + msg); }; // Declaring listener geek2 to myEvent2 var geek2 = (msg) => { console.log("Message from geek2: " + msg); }; // Listening to myEvent with geek1 and geek2 eventEmitter.on('myEvent', geek1); eventEmitter.on('myEvent', geek2); // Removing listener eventEmitter.off('myEvent', geek1); // Triggering myEvent eventEmitter.emit('myEvent', 'Event occurred'); // Triggering error eventEmitter.emit('error', new Error('Attention!'));
Producción:
The listener is added to removeListener The listener is added to myEvent The listener is added to myEvent The listener is removed from myEvent Message from geek2: Event occurred Attention! There was an error
Referencia: https://nodejs.org/api/events.html#events_class_eventemitter
Publicación traducida automáticamente
Artículo escrito por Pragya_Chaurasia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA