devstory

Le Tutoriel de NodeJS EventEmitter

  1. NodeJS EventEmitter
  2. Exemple de EventEmitter
  3. Lớp EventEmitter

1. NodeJS EventEmitter

NodeJS soutient perfectionnement les événements dans les applications. Chaque action sur un ordinateur est un événement. Par exemple, lorsque vous lisez un fichier sur le disque dur. Cela signifie que vous devez faire deux actions "ouvrir le fichier" et "fermer le fichier" après avoir fini la lecture, nous avons deux événements "Ouvrir" et "Fermer". En fonction des événements, vous insérez vos codes pour faire quelque chose.
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!');
});
Le module events vous fournit une classe EventEmitter, qui est une classe centrale dans le NodeJS aidant à définir un événement, inscription Listener (Auditeur) de cet événement et émettant (emit) l'événement.
Listener
Dans NodeJS, le Listener est une fonction. Elle sera appelée pour exécuter lorsqu'un événement se déroule. Probablement, il y a 0, 1 ou plusieurs Listener are attachés (bind) à cet événement.
Pour plus de simplicité, regardez l'illustration suivante : une souris et un piège à souris. Un événement est préparé pour avoir lieu. Lorsque l'événement se déroulé (le gâteau est volé), le piège à souris effectuera sa tâche. Le piège à souris est ici un "Listener", qui se réagit lorsque l'événement se produira.

2. Exemple de EventEmitter

Importez le module events et déclarez un objet EventEmitter :
// Import events module
var events = require('events');


// Create an EventEmitter object
var eventEmitter = new events.EventEmitter();
Enregistrez des Listener (Les fonctions seront appelés pour exécuter lorsqu'un événement se déroule).
// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler1);

// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler2);
Émettez l'événement :
// 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');
Exécutez l'exemple :
node eventemitter-examples/first-example.js

3. Lớp EventEmitter

No
Méthode
Description
1
addListener(event, listener)

Ajoutez un listener à la fin du tableau de listeners pour l'événement précis. Cette méthode ne vérifie si ce listener a été ajouté ou non.

2
on(event, listener)

Cette méthode est identique exactement 100% à celle de addListener.

3
once(event, listener)

Ajoutez un listener au tableau listeners de l'événement précis. Mais ce listener a été appelé une seul fois lorsqu'un événement se déroule. Puis il est enlevé du tableau.

4
removeListener(event, listener)

Enlevez un listener du tableau des listeners de l'évếnmênt précis. Si un listener a été ajouté à ce tableau plusieurs fois, afin d'enlever ce listener vous devez appeler cette méthode plusieurs fois.

5
removeAllListeners([event])

Enlevez tous les listener, ou supprimez tous les listener de l'événement précis.

6
setMaxListeners(n)

Par défaut, EventEmitter imprimera un avertissement si plus de 10 listener ont été ajoutés à un événement précis. C'est un défaut util qui permet de trouver des fuites de mémoire (memory leaks). Bien évidemment, vous pouvez personnaliser un autre numéro ou le mettez 0 si vous voulez qu'il est illimité (unlimited).

7
listeners(event)

Renvoie un tableau de listener à l'événement précis.

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

Exécutez chaque listener dans le tableau, avec des paramètres. Renvoie true si le tableau a au moins un listener, si non, renvoie false.