codestory

Die Anleitung zu NodeJS EventEmitter

  1. NodeJS EventEmitter
  2. Zum Beispiel: EventEmitter
  3. Lớp EventEmitter

1. NodeJS EventEmitter

NodeJS unterstützt die Event in der Applikationen sehr perfekt. Jede Aktion im Computer wird ein Event genannt (event). Zum Beispiel wenn Sie eine File auf die Festplatte lesen, d.h machen Sie 2 Aktionen "die File öffnen " und nach dem Lesen "die File schließen" , deshalb haben wir hier 2 Event "Öffnen" & "Schließen". Nach dem Event fügen Sie Ihre Kode ein um etwas zu machen.
var fs = require('fs');

// Create a stream to read file
var rs = fs.createReadStream('C:/test/demo.txt');

// The event 'open':
rs.on('open', function() {
    console.log('File opened!');
});
Das Modul events bietet Sie eine Klasse EventEmitter an. Das ist eine zentrale Klasse im NodeJS , die bei der Definition eines Event unterstützt, die Listener (Hörensobjekt) des Event registriert und das Event emittiert (emit).
Listener
Im NodeJS ist Listener eine Funktion. Sie wird angeruft wenn ein Event passiert. Es gibt viellecht 0, 1 oder viele Listener, die mit dem Event gebindet (bind) .
Zur Einfachheit beobachten Sie die folgende Illustration, eine Ratte und eine Rattenfalle. Ein Event fast passiert. Wenn das Event passiert (das Stück des Kuchen wird gestohlen), wird die Rattenfalle ihre Aufgabe durchführen. Die Rattenfalle hier ist ein "Listener", wird sie funktionieren wenn das Event passiert.

2. Zum Beispiel: EventEmitter

Importieren Sie das Modul events, und melden Sie ein Objekt EventEmitter an:
// Import events module
var events = require('events');


// Create an EventEmitter object
var eventEmitter = new events.EventEmitter();
Die Listener registrieren (die Funktion werden bei Auftrit des Event zur Implementation angeruft).
// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler1);

// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler2);
Das Event emittieren
// Fire bellRing event!!
eventEmitter.emit('bellRing', 'Jerry');
first-example.js
// Import events module
var events = require('events');


// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

// A Listener
var bellRingHandler1 = function bellRingHandler1(who) {
   console.log("\n");
   console.log('The Bell Ringing..... (Handler 1)');

   console.log(" " + who + " was standing behind the door!");
   if(who == 'Jerry') {
       console.log(' Tom, help me!!');
       return;
   }
   console.log(" Welcome " + who);
}

// A Listener
var bellRingHandler2 = function bellRingHandler2(who) {
   console.log("\n");
   console.log('The Bell Ringing..... (Handler 2)');

   eventEmitter.emit("nobodyIsAtHome");
}

// A Listener
var nobodyIsAtHomeHandler = function nobodyIsAtHomeHandler()  {
   console.log("\n");
   console.log(" Sorry, Nobody is at home now, Please leave your message!")
}


// Add Event Listeners
eventEmitter.addListener('bellRing', bellRingHandler1);
eventEmitter.addListener('bellRing', bellRingHandler2);

eventEmitter.addListener('nobodyIsAtHome', nobodyIsAtHomeHandler);

// ----- Testing ------

// Fire bellRing event!!
eventEmitter.emit('bellRing', 'Jerry');
Das Beispiel laufen
node eventemitter-examples/first-example.js

3. Lớp EventEmitter

No
Die Methode
Die Bezeichnung
1
addListener(event, listener)

Ein listener am Ende des Array listeners für das bestimmte Event einfügen. Die Methode prüft nicht, ob dieser listener eingefügt oder nicht wird.

2
on(event, listener)

Die Methode ist 100% ähnlich wie die Methode addListener.

3
once(event, listener)

Einen listener in dem Array listeners des bestimmten Event einfügen. Aber der listener wird nur ein Mal aufgeruft wenn das Event passiert. Danach wird es aus dem Array entfernt.

4
removeListener(event, listener)

Ein listener aus dem Array listeners des bestimmten Event entfernen. Wenn ein listener wurde mehrmals am Array eingefügt, sollen Sie diese Methode mehrmals anrufen um listener zu löschen

5
removeAllListeners([event])

Alle listener, oder alle listener eines bestimmten Event löschen

6
setMaxListeners(n)

Nach dem Default wird EventEmitter die Warnung geben wenn mehr als 10 listener in einem bestimmten Event eingefügt wird. Das ist ein nutzliches Default damit die Speicherung Leakagen wird gefunden (memory leaks). Sie können eine andere Nummer einstellen oder 0 einstellen wenn Sie es unbeschränkt (unlimited) möchten.

7
listeners(event)

Ein Array der Listener für das bestimmte Array zurückgeben.

8
emit(event,
[arg1], [arg2], [...])

Jeden Listener im Array mit den Parameter schrittlich implementieren. true zurückgeben wenn Array mindesten ein listener hat, umgekehrt false.