OUJOOD.COM
Introduction
Node.js est particulièrement adapté aux applications événementielles grâce à sa nature asynchrone. Dans ce tutoriel, nous allons explorer comment gérer les événements à l'aide du module intégré events, comprendre le rôle de la classe EventEmitter et apprendre à déclencher vos propres événements.
Exemple simple avec un flux de lecture
Voici un exemple illustrant comment un objet Node.js peut déclencher un événement lors de l'ouverture d'un fichier :
Code
var fs = require('fs');
var rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
console.log('Le fichier est ouvert');
});
Explication :
fs.createReadStreamcrée un flux de lecture pour le fichierdemofile.txt.- L'événement
openest déclenché automatiquement lorsque le fichier est ouvert avec succès. - La méthode
onattache une fonction callback à cet événement, affichant un message dans la console.
Créer et gérer vos propres événements
Pour créer et écouter vos propres événements, vous devez utiliser la classe EventEmitter. Voici comment cela fonctionne :
Code
var events = require('events');
var eventEmitter = new events.EventEmitter();
// Créer un gestionnaire d'événements :
var myEventHandler = function () {
console.log("Un événement personnalisé a été déclenché !");
};
// Associer le gestionnaire à un événement nommé "customEvent" :
eventEmitter.on('customEvent', myEventHandler);
// Déclencher l'événement "customEvent" :
eventEmitter.emit('customEvent');
Explication :
require('events')importe le module intégré Node.js pour la gestion des événements.new events.EventEmitter()crée une instance de l'objetEventEmitter.myEventHandlerest une fonction définissant l'action à exécuter lorsqu'un événement spécifique est déclenché.eventEmitter.onattache le gestionnaire d'événements à l'événement nommécustomEvent.eventEmitter.emitdéclenche l'événement, exécutant la fonction associée.
Utilisation avancée : gestionnaires multiples
Il est possible d'attacher plusieurs gestionnaires à un seul événement. Voici un exemple :
Code
var events = require('events');
var eventEmitter = new events.EventEmitter();
// Premier gestionnaire :
eventEmitter.on('dataEvent', function () {
console.log("Gestionnaire 1 exécuté.");
});
// Deuxième gestionnaire :
eventEmitter.on('dataEvent', function () {
console.log("Gestionnaire 2 exécuté.");
});
// Déclencher l'événement "dataEvent" :
eventEmitter.emit('dataEvent');
Explication :
eventEmitter.onest utilisé deux fois pour associer deux fonctions distinctes à l'événementdataEvent.- Lorsque l'événement
dataEventest déclenché, les deux gestionnaires sont exécutés dans l'ordre où ils ont été ajoutés.
Conclusion
Le module events et la classe EventEmitter constituent un outil puissant dans Node.js pour la gestion des événements asynchrones. Grâce à eux, vous pouvez créer des applications réactives et performantes. Explorez ces concepts en profondeur pour en tirer pleinement parti.