Desencadena un evento que cualquiera puede escuchar. Diferentes bibliotecas ofrecen diferentes implementaciones y para diferentes propósitos, pero la idea básica es proporcionar un marco para emitir eventos y suscribirse a ellos.
Ejemplo de jQuery:
$('#foo').bind('click', function() {
alert("Click!");
});
$('#foo').trigger('click');
Sin embargo, con jQuery para emitir un evento, debe tener un objeto DOM y no puede emitir eventos desde un objeto arbitrario. Aquí es donde el emisor de eventos se vuelve útil. Aquí hay un pseudocódigo para demostrar eventos personalizados (exactamente el mismo patrón que el anterior):
var myCustomObject = {};
extend(myCustomObject , EventEmitter);
myCustomObject.on("somethingHappened", function() {
alert("something happened!");
});
myCustomObject.emit("somethingHappened");
Ejemplo:-
var example_emitter = new (require('events').EventEmitter); example_emitter.on("test", function () { console.log("test"); }); example_emitter.on("print", function (message) { console.log(message); }); example_emitter.emit("test"); example_emitter.emit("print", "message"); example_emitter.emit("unhandled"); > var example_emitter = new (require('events').EventEmitter); {} > example_emitter.on("test", function () { console.log("test"); }); { _events: { test: [Function] } } > example_emitter.on("print", function (message) { console.log(message); }); { _events: { test: [Function], print: [Function] } } > example_emitter.emit("test"); test //console.log'd true //return value > example_emitter.emit("print", "message"); message //console.log'd true //return value > example_emitter.emit("unhandled"); false //return value
Esto demuestra toda la funcionalidad básica de un
EventEmitter
. Elon or addListener
método (básicamente el método de suscripción) le permite elegir el evento a vigilar y la devolución de llamada a llamar. losemit
método (el método de publicación), por otro lado, le permite "emitir" un evento, lo que hace que todas las devoluciones de llamada registradas en el evento se 'activen' (sean llamadas).De la fuente ¿Qué son los emisores de eventos?
fuente
Ejemplo simple en Node.js:
var EventEmitter = require('events').EventEmitter; var concert = new EventEmitter; var singer = 'Coldplay'; concert.on('start', function (singer) { console.log(`OMG ${singer}!`); }); concert.on('finish', function () { console.log(`It was the best concert in my life...`); }); concert.emit('start', singer); concert.emit('finish');
fuente
Considere una función de devolución de llamada
function test(int a, function(){ console.log("I am call-back function"); }){ console.log("I am a parent function"); }
Ahora, siempre que se llama a la función principal en un evento (un clic en un botón o cualquier conexión, etc.), primero ejecuta su código y luego el control se pasa a la función de devolución de llamada. Ahora, un emisor de eventos es un objeto / método que desencadena un evento tan pronto como se lleva a cabo alguna acción para pasar el control a la función principal. Por ejemplo, el servidor es un emisor de eventos en la programación de Node.Js. Emite un evento de error tan pronto como el servidor encuentra un error que pasa el control a la función principal del error. El servidor emite un evento de conexión tan pronto como un conector se conecta al servidor, este evento activa la función principal de getConnections, que de hecho también toma una función de devolución de llamada como argumento. Entonces, de hecho, es una cadena, que se activa cuando algo sucede mediante el emisor de eventos que emite un evento para iniciar la ejecución de una función.
fuente