Middle+
Qual é a sequência de execução de microtarefas e macro-tarefas no Event Loop?
sobes.tech IA
Resposta da IA
A ordem de execução no Event Loop do JavaScript é a seguinte:
- Macro-tarefas (fila de tarefas) — por exemplo, manipuladores de eventos, setTimeout, setInterval, pedidos de rede.
- Micro-tarefas (fila de microtarefas) — promessas (.then/.catch/.finally), MutationObserver.
Sequência:
- Uma macro-tarefa é executada da fila.
- Após a execução da macro-tarefa, todas as microtarefas da fila de microtarefas são executadas em sequência.
- Após limpar as microtarefas, o Event Loop passa para a próxima macro-tarefa.
Em outras palavras, microtarefas são executadas imediatamente após a macro-tarefa atual e antes da próxima, permitindo processar promessas e outras microtarefas de alta prioridade.
Exemplo:
console.log('script start');
setTimeout(() => console.log('setTimeout'), 0);
Promise.resolve().then(() => console.log('promise1')).then(() => console.log('promise2'));
console.log('script end');
A saída será:
script start
script end
promise1
promise2
setTimeout