Il componente EventEmitter di Node.js
Se hai lavorato con JavaScript nel browser, sai quanto l’interazione dell’utente venga gestita attraverso gli eventi: clic del mouse, pressioni dei tasti della tastiera, reazione agli spostamenti del mouse, e così via.
Dal lato del server, Node.js ci offre la possibilità di costruire un sistema simile utilizzando il modulo events
.
Questo modulo, in particolare, offre la classe EventEmitter
, che useremo per gestire i nostri eventi.
La inizializzi usando:
const EventEmitter = require("node:events");
const eventEmitter = new EventEmitter();
Questo oggetto espone, tra gli altri, i metodi on
ed emit
.
emit
è usato per innescare un eventoon
è usato per aggiungere una funzione di callback che verrà eseguita quando l’evento viene innescato
Ad esempio, creiamo un evento start
, e a titolo di esempio, reagiamo ad esso semplicemente registrando un messaggio sulla console:
eventEmitter.on("start", () => {
console.log("started");
});
Quando eseguiamo:
eventEmitter.emit("start");
la funzione del gestore degli eventi viene innescata, e otteniamo il log sulla console.
Puoi passare gli argomenti al gestore degli eventi passandoli come argomenti aggiuntivi a emit()
:
eventEmitter.on("start", (number) => {
console.log(`started ${number}`);
});
eventEmitter.emit("start", 23);
Con più argomenti:
eventEmitter.on("start", (start, end) => {
console.log(`started from ${start} to ${end}`);
});
eventEmitter.emit("start", 1, 100);
L’oggetto EventEmitter espone anche diversi altri metodi per interagire con gli eventi, come
once()
: aggiunge un listener per una sola voltaremoveListener()
/off()
: rimuove un listener per un eventoremoveAllListeners()
: rimuove tutti i listener per un evento