logo oujood
🔍

Tutoriel Node.js Events : Comprendre et utiliser les événements


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

📋 Copier le code

var fs = require('fs');
var rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
console.log('Le fichier est ouvert');
});
	

Explication :

  • fs.createReadStream crée un flux de lecture pour le fichier demofile.txt.
  • L'événement open est déclenché automatiquement lorsque le fichier est ouvert avec succès.
  • La méthode on attache 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

📋 Copier le 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'objet EventEmitter.
  • myEventHandler est une fonction définissant l'action à exécuter lorsqu'un événement spécifique est déclenché.
  • eventEmitter.on attache le gestionnaire d'événements à l'événement nommé customEvent.
  • eventEmitter.emit dé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

📋 Copier le 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.on est utilisé deux fois pour associer deux fonctions distinctes à l'événement dataEvent.
  • Lorsque l'événement dataEvent est 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.