APRENDIZADO & COGNIÇÃO

Event Loop, Microtasks e Macrotasks: O Modelo de Execução do JavaScript

O quiz que separa quem entende de quem decora Cole este trecho no console do navegador ou no Node.js e…

O quiz que separa quem entende de quem decora

Cole este trecho no console do navegador ou no Node.js e tente prever a ordem de saída antes de executar:

console.log("1: script start");setTimeout(() => { console.log("2: setTimeout");}, 0);Promise.resolve() .then(() => { console.log("3: promise then"); }) .then(() => { console.log("4: promise then chained"); });queueMicrotask(() => { console.log("5: queueMicrotask");});console.log("6: script end");

A saída é:

1: script start6: script end3: promise then5: queueMicrotask4: promise then chained2: setTimeout

Se você errou a posição do setTimeout em relação às Promises, o problema não é falta de prática: é que a maioria dos materiais mistura três conceitos distintos (call stack, microtask queue e task queue) como se fossem a mesma coisa.

O que é o event loop (sem analogia de garçom)

O event loop é um algoritmo de scheduling implementado pelo runtime, não pela linguagem. A especificação ECMAScript define a semântica de Jobs (microtasks), mas quem implementa o loop de fato é o runtime: o V8 delega para o embedder (Chromium usa libevent, Node.js usa libuv).

O ciclo simplificado funciona assim:

  1. Executa todo o código síncrono da call stack até esvaziar.
  2. Drena a microtask queue inteira (Promises, queueMicrotask, MutationObserver no browser).
  3. Pega UMA tarefa da macrotask queue (também chamada de task queue): setTimeout, setInterval, I/O callbacks, setImmediate (Node.js).
  4. Volta ao passo 2.

O ponto que gera confusão: microtasks são drenadas completamente entre cada macrotask. Isso significa que uma microtask que agenda outra microtask adia indefinidamente a próxima macrotask.


Este é um trecho. O tutorial completo, com todos os exemplos, os testes e as limitações, está em https://www.vivodecodigo.com.br/backend/event-loop-microtasks-macrotasks-modelo-execucao-javascript. Se você já passou por esse problema de outro jeito, conta nos comentários: a discussão aqui ajuda a melhorar o artigo.

Pontos-chave

  • O quiz que separa quem entende de quem decoraCole este trecho no console do navegador ou no Node.js e tente prever a ordem de saída antes de executar:console.log("1: script start");setTimeout(() => { console.log("2: setTimeout");}, 0);Promise.resolve() .then(() => { console.log("3: promise…
  • A especificação ECMAScript define a semântica de Jobs (microtasks), mas quem implementa o loop de fato é o runtime: o V8 delega para o embedder (Chromium usa libevent, Node.js usa libuv).O ciclo simplificado funciona assim:Executa todo o código síncrono da…
  • Isso significa que uma microtask que agenda outra microtask adia indefinidamente a próxima macrotask.Este é um trecho.
  • O tutorial completo, com todos os exemplos, os testes e as limitações, está em https://www.vivodecodigo.com.br/backend/event-loop-microtasks-macrotasks-modelo-execucao-javascript.

Síntese

Em síntese, “Event Loop, Microtasks e Macrotasks: O Modelo de Execução do JavaScript” reúne os seguintes desdobramentos: Se você já passou por esse problema de outro jeito, conta nos comentários: a discussão aqui ajuda a melhorar o artigo.

Perguntas frequentes

Respostas institucionais sobre esta cobertura, fontes e limites editoriais.

Sobre o que trata “Event Loop, Microtasks e Macrotasks: O Modelo de Execução do…”?
O quiz que separa quem entende de quem decoraCole este trecho no console do navegador ou no Node.js e tente prever a ordem de saída antes de executar:console.log("1: script start");setTimeout(() => { console.log("2: setTimeout");}, 0);Promise.resolve() .then(()…
O que a matéria explica sobre “O quiz que separa quem entende de quem decora”?
Cole este trecho no console do navegador ou no Node.js e tente prever a ordem de saída antes de executar:console.log("1: script start");setTimeout(() => { console.log("2: setTimeout");}, 0);Promise.resolve() .then(() => { console.log("3: promise then"); }) .then(() => { console.log("4: promise then chained"); });queueMicrotask(()…
O que a matéria explica sobre “O que é o event loop (sem analogia de garçom)”?
O event loop é um algoritmo de scheduling implementado pelo runtime, não pela linguagem. A especificação ECMAScript define a semântica de Jobs (microtasks), mas quem implementa o loop de fato é o runtime: o V8 delega para o embedder (Chromium usa libevent,…
O que a matéria explica sobre “Pontos-chave”?
O quiz que separa quem entende de quem decoraCole este trecho no console do navegador ou no Node.js e tente prever a ordem de saída antes de executar:console.log("1: script start");setTimeout(() => { console.log("2: setTimeout");}, 0);Promise.resolve() .then(() => { console.log("3: promise…A especificação ECMAScript…
O que a matéria explica sobre “Síntese”?
Em síntese, “Event Loop, Microtasks e Macrotasks: O Modelo de Execução do JavaScript” reúne os seguintes desdobramentos: Se você já passou por esse problema de outro jeito, conta nos comentários: a discussão aqui ajuda a melhorar o artigo.
Quem edita o conteúdo do Estrato Mente?
A cobertura é produzida e revisada pela equipe editorial do Estrato Mente, com editor-chefe responsável pela linha editorial. Conheça a redação em https://mente.estrato.cc/equipe/.
Quais fontes o Estrato prioriza?
Priorizamos fontes primárias (órgãos oficiais, balanços, estudos revisados, documentos públicos) e cruzamos informações antes da publicação, conforme a política editorial.
Como solicitar correção de uma matéria?
Envie o pedido pela página de Correções (https://mente.estrato.cc/correcoes/) ou Contato (https://mente.estrato.cc/contato/). Erros materiais são corrigidos com registro da atualização.
WhatsApp X LinkedIn
Compartilhar: LinkedIn
Bruno Leite

Bruno Leite

Bruno Leite integra a equipe editorial do Estrato Mente, vertical da rede Estrato, na função de Repórter de Aprendizado. O escopo permanente de cobertura inclui estudo, memória e foco, com atenção ao leitor brasileiro que busca contexto factual, datas oficiais e implicações práticas. Na produção diária, prioriza fontes primárias (órgãos públicos, balanços, papers e documentos oficiais), cruza pelo menos duas referências independentes quando o tema é contestado e evita manchetes que prometam certeza onde há incerteza. Critérios de qualidade: lead com o fato principal, atribuição clara de autoria da equipe Estrato, atualização com selo quando há mudança material e linguagem acessível sem simplificar demais o risco ou o contexto. Trabalha sob revisão da mesa editorial e do editor-chefe do portal. Matérias YMYL recebem segunda leitura antes da publicação e podem ser atualizadas quando surgem novos dados oficiais. Limites: este perfil descreve o papel editorial na marca Estrato. O conteúdo publicado é informativo e não constitui aconselhamento médico, financeiro, jurídico ou profissional personalizado. Transparência ao leitor: metodologia em /metodologia/, ética em /etica-editorial/, correções em /correcoes/, equipe em /equipe/ e canal em /contato/ ([email protected]). Na página-mãe da rede, a bio ampliada e o arquivo de matérias ficam em estrato.cc/blog/, com link para o arquivo do autor em cada portal.

Deixe um comentário