Menu
CoddyTech

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 timer

Um 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.

challenge icon

Desafio

Fácil
  • order.js imprime 1 sync, 2 microtask, 3 timeout, 4 timeout later, nessa ordem.
  • Mantenha as quatro linhas onde estão. Envolva-as em uma chamada de queueMicrotask e duas chamadas de setTimeout.

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');
quiz iconTeste seus conhecimentos

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