Bussola r2uAccademia visiva, dodici corsi

Node.js · 20 min

Il softwareMappa del corso

L’event loop è un girotondo

Un thread principale. Deleghi I/O e alcune API; il JS CPU-bound no. Quello, o è breve, o lo togli dal loop (worker / processo).

Il disegno

Il centro è occupato da un pezzo di JS alla volta. Clicca una fase del giro.

call stack

pezzo selezionato
timer

Scade il tempo, la callback è candidata. Non è un orologio realtime da OS realtime.

Da ricordare

setTimeout(0) non è “adesso”: è “al prossimo giro utile”.

In poche righe

fs.readFile non ferma il girotondo: chiede al kernel (e a volte al thread pool di libuv) e torna più tardi. Un JSON.parse enorme sul file già in RAM invece sì: è JS sul thread unico, occupa il cameriere.

“Delega” non è magia su tutto. I/O e certe API native sì. Calcolo pesante in JavaScript no, finché non fai offloading esplicito: worker_threads, un processo a parte, o un servizio che calcola altrove.

Microtask (Promise) saltano avanti rispetto a molti timer. Non è mistero: è una coda con priorità.

Disegna questo

Cerchio con tick. Fuori, “thread pool / kernel”. Una callback che rientra nel cerchio.

Un foglio, non un software. Se lo sai ridisegnare senza guardare, la lezione è tua.