La création et la gestion des événements dans Node.js sont principalement réalisées à l'aide de la classe EventEmitter du module events. Voici comment vous pouvez utiliser cette classe pour créer et gérer vos propres événements.

Importation du module events

Tout d'abord, vous devez importer le module events :

const EventEmitter = require('events');

 

Création d'une instance de EventEmitter

Ensuite, créez une instance de EventEmitter :

const myEmitter = new EventEmitter();

 

Écoute d'événements

Vous pouvez ensuite ajouter des écouteurs d'événements en utilisant la méthode .on() ou .addListener() (qui sont en fait la même fonction; .on() est juste un alias de .addListener()).

myEmitter.on('event', () => {
  console.log('Un événement a été déclenché!');
});

 

Émission d'événements

Pour émettre un événement, utilisez la méthode .emit(). Cela déclenchera tous les écouteurs attachés à cet événement.

myEmitter.emit('event');

Passage de données aux écouteurs

Vous pouvez passer des arguments aux écouteurs d'événements en les ajoutant après le nom de l'événement dans .emit().

myEmitter.on('eventWithParams', (arg1, arg2) => {
  console.log(`arg1: ${arg1}, arg2: ${arg2}`);
});

myEmitter.emit('eventWithParams', 'param1', 'param2');

 

Écouteurs une seule fois

Si vous souhaitez qu'un écouteur ne soit déclenché qu'une seule fois, utilisez la méthode .once() au lieu de .on().

myEmitter.once('eventOnce', () => {
  console.log('Cet événement sera émis une seule fois');
});

myEmitter.emit('eventOnce');
// L'événement ne sera pas émis une deuxième fois
myEmitter.emit('eventOnce');

 

Suppression d'écouteurs

Pour supprimer des écouteurs, utilisez la méthode .removeListener() ou .off() (.off() est un alias de .removeListener() dans les versions récentes de Node.js).

const myListener = () => {
  console.log('Je serai supprimé après cet événement');
};

myEmitter.on('eventToRemove', myListener);

// Émettre l'événement une première fois
myEmitter.emit('eventToRemove');

// Supprimer l'écouteur
myEmitter.removeListener('eventToRemove', myListener);

// L'écouteur ne sera pas appelé cette fois-ci, car il a été supprimé
myEmitter.emit('eventToRemove');

 

Gestion des erreurs

Il est important de gérer correctement les erreurs en attachant un écouteur pour l'événement spécial error.

myEmitter.on('error', (err) => {
  console.error('Une erreur est survenue:', err);
});

myEmitter.emit('error', new Error('quelque chose a mal tourné'));

 

Héritage de EventEmitter

Vous pouvez également créer vos propres classes qui héritent de EventEmitter pour organiser votre gestion d'événements autour de vos propres objets.

class MyEmitter extends EventEmitter {}

const myCustomEmitter = new MyEmitter();
myCustomEmitter.on('event', () => {
  console.log('Un événement a été déclenché sur l\'instance personnalisée!');
});

myCustomEmitter.emit('event');

 

En suivant ces étapes, vous pouvez créer un système d'événements robuste pour votre application Node.js, en utilisant la puissance et la flexibilité de EventEmitter.

Modifié le: jeudi 2 novembre 2023, 08:44