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 timerUn 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.
Sfida
Facileorder.jsstampa1 sync,2 microtask,3 timeout,4 timeout later, in quest’ordine.- Lascia le quattro righe dove sono. Racchiudile in una chiamata a
queueMicrotaske in due chiamate asetTimeout.
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');
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
1Eseguire JavaScript con Node
Ciao, NodeArgomenti della riga di comandoComandi