Node.js - Émetteur d'événements
De nombreux objets dans un nœud émettent des événements, par exemple, un net.Server émet un événement chaque fois qu'un pair s'y connecte, un fs.readStream émet un événement lorsque le fichier est ouvert. Tous les objets qui émettent des événements sont des instances d'événements.EventEmitter.
Classe EventEmitter
Comme nous l'avons vu dans la section précédente, la classe EventEmitter se trouve dans le module événements. Il est accessible via le code suivant -
// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();
Lorsqu'une instance EventEmitter fait face à une erreur, elle émet un événement «erreur». Lorsqu'un nouvel écouteur est ajouté, l'événement 'newListener' est déclenché et lorsqu'un écouteur est supprimé, l'événement 'removeListener' est déclenché.
EventEmitter fournit plusieurs propriétés comme on et emit. on propriété est utilisée pour lier une fonction à l'événement et emit est utilisé pour déclencher un événement.
Méthodes
Sr.No. | Méthode et description |
---|---|
1 | addListener(event, listener) Ajoute un écouteur à la fin du tableau d'écouteurs pour l'événement spécifié. Aucune vérification n'est effectuée pour voir si l'auditeur a déjà été ajouté. Plusieurs appels passant la même combinaison d'événement et d'écouteur entraîneront l'ajout de l'écouteur plusieurs fois. Renvoie l'émetteur, ainsi les appels peuvent être chaînés. |
2 | on(event, listener) Ajoute un écouteur à la fin du tableau d'écouteurs pour l'événement spécifié. Aucune vérification n'est effectuée pour voir si l'auditeur a déjà été ajouté. Plusieurs appels passant la même combinaison d'événement et d'écouteur entraîneront l'ajout de l'écouteur plusieurs fois. Renvoie l'émetteur, ainsi les appels peuvent être chaînés. |
3 | once(event, listener) Ajoute un auditeur ponctuel à l'événement. Cet écouteur n'est appelé que la prochaine fois que l'événement est déclenché, après quoi il est supprimé. Renvoie l'émetteur, ainsi les appels peuvent être chaînés. |
4 | removeListener(event, listener) Supprime un écouteur du tableau d'écouteurs pour l'événement spécifié. Caution −Il modifie les indices de tableau dans le tableau d'écouteur derrière l'écouteur. removeListener supprimera, au plus, une instance d'un écouteur du tableau d'écouteurs. Si un seul écouteur a été ajouté plusieurs fois au tableau d'écouteurs pour l'événement spécifié, removeListener doit être appelé plusieurs fois pour supprimer chaque instance. Renvoie l'émetteur, ainsi les appels peuvent être chaînés. |
5 | removeAllListeners([event]) Supprime tous les écouteurs ou ceux de l'événement spécifié. Ce n'est pas une bonne idée de supprimer les écouteurs qui ont été ajoutés ailleurs dans le code, en particulier lorsqu'il s'agit d'un émetteur que vous n'avez pas créé (par exemple, des sockets ou des flux de fichiers). Renvoie l'émetteur, ainsi les appels peuvent être chaînés. |
6 | setMaxListeners(n) Par défaut, EventEmitters imprimera un avertissement si plus de 10 écouteurs sont ajoutés pour un événement particulier. C'est une valeur par défaut utile qui aide à trouver des fuites de mémoire. Il est évident que tous les émetteurs ne doivent pas être limités à 10. Cette fonction permet d'augmenter cela. Réglez à zéro pour illimité. |
sept | listeners(event) Renvoie un tableau d'écouteurs pour l'événement spécifié. |
8 | emit(event, [arg1], [arg2], [...]) Exécutez chacun des écouteurs dans l'ordre avec les arguments fournis. Renvoie true si l'événement a des écouteurs, false dans le cas contraire. |
Méthodes de classe
Sr.No. | Méthode et description |
---|---|
1 | listenerCount(emitter, event) Renvoie le nombre d'écouteurs pour un événement donné. |
Événements
Sr.No. | Événements et description |
---|---|
1 | newListener
Cet événement est émis à chaque fois qu'un écouteur est ajouté. Lorsque cet événement est déclenché, l'écouteur n'a peut-être pas encore été ajouté au tableau d'écouteurs de l'événement. |
2 | removeListener
Cet événement est émis chaque fois que quelqu'un supprime un écouteur. Lorsque cet événement est déclenché, l'écouteur n'a peut-être pas encore été supprimé du tableau d'écouteurs de l'événement. |
Exemple
Créez un fichier js nommé main.js avec le code Node.js suivant -
var events = require('events');
var eventEmitter = new events.EventEmitter();
// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}
// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}
// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);
// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);
var eventListeners = require('events').EventEmitter.listenerCount
(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
// Fire the connection event
eventEmitter.emit('connection');
// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");
// Fire the connection event
eventEmitter.emit('connection');
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
console.log("Program Ended.");
Maintenant, exécutez le main.js pour voir le résultat -
$ node main.js
Vérifiez la sortie.
2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.