Menu
CoddyTech

Il ciclo degli eventi

Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 18 di 24.

I callback e le promise vengono eseguiti più tardi, e i bug si nascondono nel non sapere esattamente quando.

Node esegue per prima tutto il codice sincrono fino alla fine. Poi esegue i microtask: i callback delle promise e le funzioni passate a queueMicrotask. Solo dopo arrivano i timer, anche setTimeout(fn, 0), ciascuno allo scadere del proprio intervallo.

setTimeout(() => console.log('C timer'), 0);
Promise.resolve().then(() => console.log('B promise'));
console.log('A sync');
// A sync, B promise, C timer

Un ritardo di 0 significa il prima possibile dopo i microtask, mai prima di essi. I timer scattano nell'ordine del loro ritardo; a parità di ritardo, scatta per primo il timer impostato per primo.

challenge icon

Sfida

Facile
  • order.js stampa 1 sync, 2 microtask, 3 timeout, 4 timeout later, in quest’ordine.
  • Lascia le quattro righe dove sono. Racchiudile in una chiamata a queueMicrotask e in due chiamate a setTimeout.

Esegui node order.js e confronta il risultato con la tua previsione. Poi imposta a 0 il ritardo di entrambi i timer e riesegui il programma.

Provalo tu

// Fai in modo che queste righe vengano stampate in ordine numerico senza spostarle.
// Inseriscile invece in queueMicrotask e setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di Node.js