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 :
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énementon
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 :
eventEmitter.on('start', () => {
console.log('started')
})
Lorsque nous exécutons
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()
:
eventEmitter.on('start', number => {
console.log(`started ${number}`)
})
eventEmitter.emit('start', 23)
Arguments multiples :
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 uniqueremoveListener()
/off()
: supprimer un écouteur d'événements d'un événementremoveAllListeners()
: supprimer tous les écouteurs pour un événement
Vous pouvez en savoir plus sur ces méthodes dans la documentation du module events.