← Tutti gli episodi
Copertina di Il codice che non aspetta fermo: un solo filo e il ciclo degli eventi
Stagione 45 · Episodio 002

Il codice che non aspetta fermo: un solo filo e il ciclo degli eventi

6 settembre 2026 4:41
0:00 4:41

Ciao, e benvenuto nella seconda puntata della quarantacinquesima stagione. Nella scorsa puntata abbiamo conosciuto la storia di JavaScript. Oggi entriamo nel cuore di come funziona davvero, nel suo tratto più caratteristico, quello a cui tutto il resto è appeso: il modo in cui esegue il codice. E c'è un enigma delizioso da cui partire: JavaScript fa una cosa sola alla volta, eppure sembra farne mille insieme. Come? La risposta è il ciclo degli eventi, e una volta capito, molte cose si chiariscono.

Partiamo dall'enigma, perché è più strano di quanto sembri. JavaScript ha un solo lavoratore. Un solo filo di esecuzione, un solo esecutore che può fare una cosa sola in ogni istante. Non è come avere una squadra di operai che lavorano in parallelo: è un unico operaio, uno solo. Eppure le applicazioni scritte in JavaScript sembrano vivissime: scaricano dati, animano, rispondono ai clic, tutto apparentemente nello stesso momento. Come fa un solo lavoratore a dare questa impressione di fare tante cose insieme? Qui sta il trucco, ed è bellissimo.

Voglio darti l'idea centrale, perché è tutta qui. Il segreto è che quel solo lavoratore non aspetta mai fermo. Quando capita qualcosa di lento, per esempio scaricare dei dati da un server, o aspettare che passi un certo tempo, o attendere che l'utente faccia clic, il lavoratore non si pianta lì, immobile, a fissare il vuoto finché la cosa lenta finisce. No: consegna quella cosa lenta a qualcun altro che se ne occupi, e subito si gira a fare altro lavoro. Non spreca un istante ad aspettare. È sempre in movimento, sempre a fare qualcosa di utile.

Voglio spiegarti cosa succede quando la cosa lenta finisce, perché è la seconda metà del meccanismo. E quando la cosa lenta finalmente è pronta? Non interrompe il lavoratore di forza, non lo strattona. Si mette educatamente in fila, in una coda di cose pronte da gestire, e aspetta il suo turno. Il lavoratore, appena è libero da ciò che sta facendo, guarda la coda, prende la prossima cosa pronta, e la sbriga. Poi la successiva, e la successiva. Questo continuo girare, prendere ciò che è pronto dalla coda e occuparsene, uno dopo l'altro, senza mai fermarsi ad aspettare, è ciò che si chiama il ciclo degli eventi.

Voglio chiarire l'equivoco, perché è cruciale. Attenzione a non fraintendere: non sta facendo tante cose simultaneamente, davvero in parallelo. È sempre un solo lavoratore, che fa una cosa alla volta. Il punto è che non blocca mai, non resta mai fermo ad aspettare. La sensazione di simultaneità nasce da lì: da un lavoratore così bravo a non perdere tempo che, saltando da una cosa pronta all'altra, sembra farle tutte insieme. Ma è illusione di parallelo: in realtà è velocissima alternanza, resa possibile dal non aspettare mai.

Voglio darti la conseguenza pratica, perché è importante da sapere. Questo spiega due cose. La prima: perché JavaScript è così bravo a destreggiarsi tra tante attese diverse, la rete, i clic, i tempi, pur avendo un solo lavoratore. È il suo terreno naturale: un mare di cose che aspettano, gestite da uno che non si ferma mai. La seconda, il rovescio: non devi mai dare a quel solo lavoratore un compito lungo e bloccante, che lo tenga occupato a macinare senza staccare. Perché se lui si pianta su una cosa pesante, tutto si congela: non c'è nessun altro a rispondere, il lavoratore è uno solo. Bloccarlo significa bloccare tutto.

Voglio darti l'immagine che rende chiara questa idea, perché la vedi ovunque. Pensa a un cameriere bravissimo, uno solo, in un bar affollato. Non se ne sta impalato davanti alla macchina del caffè ad aspettare che esca: avvia il tuo caffè, e subito va a prendere l'ordine di un altro tavolo, poi sparecchia un terzo, e torna al tuo caffè solo quando è pronto e lui è libero. Un solo cameriere, che non aspetta mai fermo, serve un'intera sala proprio perché non si blocca. Un altro bar assumerebbe un cameriere per ogni tavolo, tanti lavoratori in parallelo. JavaScript sceglie l'altra via: uno solo, ma che non sta mai fermo.

Per oggi ci fermiamo qui. Siamo entrati nel cuore di come JavaScript esegue il codice. Ha un solo lavoratore, che fa una cosa alla volta, eppure sembra farne mille: il segreto è che non aspetta mai fermo. Quando qualcosa è lento, lo consegna ad altri e va avanti; quando quella cosa è pronta, si mette in coda, e il lavoratore la prende appena è libero. Questo girare continuo è il ciclo degli eventi. Non è vero parallelo, è velocissima alternanza di uno che non si blocca mai: per questo è bravo con tante attese, e per questo non devi mai dargli un compito lungo che lo pianti, o tutto si congela. Come un solo cameriere che non sta mai impalato. Nella prossima puntata vediamo lo strumento che rende tutto questo possibile: funzioni che si tengono in mano. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.