logo logo Dove iniziare Linguaggi Aiuto Blog
Home Dove iniziare Linguaggi Aiuto e Supporto Biadets Blog

Gli eventi in Node.js

Node.js gestisce molte operazioni in modo asincrono, cioè senza bloccare l’esecuzione del programma. Uno degli strumenti principali per farlo è il modulo events, che ci permette di creare e gestire eventi personalizzati, proprio come accade quando clicchiamo un pulsante in una pagina web e parte un'azione.

Con gli eventi, possiamo organizzare il nostro codice facendo in modo che quando succede qualcosa, allora Node.js eseguirà un'istruzione specifica.

Impostare il modulo

Il modulo events è incluso in Node.js, quindi non c’è bisogno di installarlo tramite npm. Ora dobbiamo creare una variabile events che lo contenga:

const events = require("events");

Da qui possiamo accedere alla classe EventEmitter, cioè "l'emettitore di eventi". Creiamo, quindi, un oggetto che conterrà i diversi eventi da poter utilizzare:

const emitter = new events.EventEmitter();

Utilizziamo questa variabile per creare e gestire gli eventi nel server.

Creare un evento

Per creare un evento, possiamo utilizzare il seguente codice:

const events = require("events");
const emitter = new events.EventEmitter();

emitter.on("saluto", () => {
  console.log("Ciao! Questo è un evento.");
});

emitter.emit("saluto");

Il codice è strutturato così:

  • emitter.on("nomeEvento", funzione) registra un evento: dice al programma "quando succede questo evento, esegui questa funzione". L'evento non parte da solo: bisogna ancora farlo partire.
  • emitter.emit("nomeEvento") attiva l’evento, cioè dice al programma "è successo questo evento, esegui tutti i listener associati".

Invece di emitter.on(), si può utilizzare emitter.once("nomeEvento", funzione) che registra un evento che può essere eseguito una sola volta. Dopo essere stato eseguito la prima volta con .emit(), viene automaticamente rimosso.

Nota: abbiamo parlato delle funzioni JavaScript in questa lezione.

Eventi di errore

L’evento error serve per gestire gli errori che possono accadere all’interno di un oggetto EventEmitter. Node.js considera gli errori degli eventi critici. Se non c’è nessun evento per registrarli, li segnala interrompendo l’esecuzione.

const events = require("events");
const emitter = new events.EventEmitter();

emitter.on("error", (err) => {
  console.error("Errore catturato:", err.message);
});

emitter.emit("error", new Error("Qualcosa è andato storto!"));

Prova!Completa gli spazi vuoti con il testo appropriato.
// Le due istruzioni base per gli eventi Node.js
const events = require("");
const emitter = new events.();

Prova!Completa gli spazi vuoti con il testo appropriato.
// Registra un evento con Node.js
emitter.____("saluto", () => {
   console.log("Ciao! Questo è un evento.");
});