O loop de eventos
Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 18 de 24.
Callbacks e promises são executados depois, e os bugs se escondem quando não se sabe exatamente quando.
O Node executa primeiro todo o código síncrono até o fim. Depois, executa as microtarefas: callbacks de promises e funções passadas para queueMicrotask. Só então vêm os temporizadores, até mesmo setTimeout(fn, 0), cada um quando seu tempo termina.
setTimeout(() => console.log('C timer'), 0);
Promise.resolve().then(() => console.log('B promise'));
console.log('A sync');
// A sync, B promise, C timerUm atraso de 0 significa o mais rápido possível após as microtarefas, nunca antes delas. Os temporizadores são acionados na ordem de seus atrasos; quando os atrasos são iguais, o temporizador configurado primeiro é acionado primeiro.
Desafio
Fácilorder.jsimprime1 sync,2 microtask,3 timeout,4 timeout later, nessa ordem.- Mantenha as quatro linhas onde estão. Envolva-as em uma chamada de
queueMicrotaske duas chamadas desetTimeout.
Execute node order.js e compare com seu palpite. Depois, defina o atraso dos dois temporizadores como 0 e execute novamente.
Experimente você mesmo
// Faça essas linhas imprimirem na ordem numérica sem movê-las.
// Em vez disso, envolva-as em queueMicrotask e setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos de Node.js
1Executando JavaScript no Node
Olá, NodeArgumentos de linha de comandoComandos