Es löst ein Ereignis aus, auf das jeder hören kann. Verschiedene Bibliotheken bieten unterschiedliche Implementierungen und für unterschiedliche Zwecke an. Die Grundidee besteht jedoch darin, einen Rahmen für die Ausgabe und das Abonnieren von Ereignissen bereitzustellen.
Beispiel aus jQuery:
$('#foo').bind('click', function() {
alert("Click!");
});
$('#foo').trigger('click');
Mit jQuery benötigen Sie jedoch ein DOM-Objekt und können keine Ereignisse von einem beliebigen Objekt ausgeben, um ein Ereignis auszugeben. Hier wird Event-Emitter nützlich. Hier ist ein Pseudocode zum Demo von benutzerdefinierten Ereignissen (genau das gleiche Muster wie oben):
var myCustomObject = {};
extend(myCustomObject , EventEmitter);
myCustomObject.on("somethingHappened", function() {
alert("something happened!");
});
myCustomObject.emit("somethingHappened");
Beispiel:-
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
Dies demonstriert alle grundlegenden Funktionen eines
EventEmitter
. Mit deron or addListener
Methode (im Grunde die Abonnementmethode) können Sie das Ereignis auswählen, auf das gewartet werden soll, und den Rückruf, der aufgerufen werden soll. Dasemit
Methode (die Veröffentlichungsmethode) hingegen ermöglicht es Ihnen, ein Ereignis zu "emittieren", wodurch alle für das Ereignis registrierten Rückrufe "ausgelöst" werden (aufgerufen werden).Aus der Quelle Was sind Ereignisemitter?
quelle
Einfaches Beispiel in 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');
quelle
Betrachten Sie eine Rückruffunktion.
function test(int a, function(){ console.log("I am call-back function"); }){ console.log("I am a parent function"); }
Wenn die übergeordnete Funktion bei einem Ereignis aufgerufen wird (ein Klick auf eine Schaltfläche oder eine Verbindung usw.), führt sie zuerst ihren Code aus, und dann wird die Steuerung an die Rückruffunktion übergeben. Ein Ereignisemitter ist nun ein Objekt / eine Methode, die ein Ereignis auslöst, sobald eine Aktion ausgeführt wird, um die Steuerung an die übergeordnete Funktion zu übergeben. Zum Beispiel ist Server ein Ereignisemitter in der Node.J-Programmierung. Es gibt ein Fehlerereignis aus, sobald der Server auf einen Fehler stößt, der die Steuerung an die übergeordnete Fehlerfunktion übergibt. Der Server gibt ein Verbindungsereignis aus, sobald ein Socket mit dem Server verbunden wird. Dieses Ereignis löst dann die übergeordnete Funktion von getConnections aus, die tatsächlich auch eine Rückruffunktion als Argument verwendet. Es handelt sich also tatsächlich um eine Kette, die ausgelöst wird, wenn etwas vom Ereignisemitter passiert, der ein Ereignis ausgibt, um eine laufende Funktion zu starten.
quelle