Skip to content

L'émetteur d'événements Node.js

Si vous avez travaillé avec JavaScript dans le navigateur, vous savez à quel point l'interaction de l'utilisateur est gérée par le biais d'événements : clics de souris, pressions sur les touches du clavier, réaction aux mouvements de la souris, etc.

Côté backend, Node.js nous offre la possibilité de construire un système similaire en utilisant le module events.

Ce module, en particulier, offre la classe EventEmitter, que nous utiliserons pour gérer nos événements.

Vous l'initialisez en utilisant :

js
import EventEmitter from 'node:events'
const eventEmitter = new EventEmitter()

Cet objet expose, entre autres, les méthodes on et emit.

  • emit est utilisé pour déclencher un événement
  • on est utilisé pour ajouter une fonction de rappel qui sera exécutée lorsque l'événement est déclenché

Par exemple, créons un événement start, et pour fournir un exemple, nous réagissons à cela en effectuant simplement une écriture dans la console :

js
eventEmitter.on('start', () => {
  console.log('started')
})

Lorsque nous exécutons

js
eventEmitter.emit('start')

la fonction de gestionnaire d'événements est déclenchée, et nous obtenons l'écriture dans la console.

Vous pouvez passer des arguments au gestionnaire d'événements en les passant comme arguments supplémentaires à emit() :

js
eventEmitter.on('start', number => {
  console.log(`started ${number}`)
})
eventEmitter.emit('start', 23)

Arguments multiples :

js
eventEmitter.on('start', (start, end) => {
  console.log(`started from ${start} to ${end}`)
})
eventEmitter.emit('start', 1, 100)

L'objet EventEmitter expose également plusieurs autres méthodes pour interagir avec les événements, comme

  • once(): ajouter un écouteur unique
  • removeListener() / off(): supprimer un écouteur d'événements d'un événement
  • removeAllListeners(): supprimer tous les écouteurs pour un événement

Vous pouvez en savoir plus sur ces méthodes dans la documentation du module events.