Na aula anterior, entendemos o papel do Event Loop e como ele organiza a execução do JavaScript.
Agora vamos dar um passo além e responder:
quando existem várias tarefas esperando, quem executa primeiro?
A resposta envolve dois tipos de filas:
- Microtasks
- Macrotasks
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que são microtasks e macrotasks
- Saber a prioridade entre elas
- Prever a ordem de execução do código
- Evitar armadilhas comuns com Promises e timeouts
O modelo completo de execução
Agora o modelo mental fica assim:
- Call Stack → executa código síncrono
- Microtask Queue → prioridade alta
- Macrotask Queue → prioridade menor
- Event Loop → gerencia tudo
O que são Macrotasks?
Macrotasks são tarefas “maiores”, como:
setTimeoutsetInterval- Eventos do DOM
- Mensagens de timers
Elas entram na Macrotask Queue.
O que são Microtasks?
Microtasks são tarefas de alta prioridade, como:
Promise.thenPromise.catchqueueMicrotask
Elas entram na Microtask Queue.
Exemplo comparativo
console.log("Início");
setTimeout(() =>
{
console.log("Macrotask");
}, 0);
Promise.resolve().then(() =>
{
console.log("Microtask");
});
console.log("Fim");
Qual será a ordem?
console.log("Início"); // Saída: Início
console.log("Fim");
// Saída: Fim
// Microtasks primeiro
// Saída: Microtask
// Depois as macrotasks
// Saída: Macrotask
Por que a microtask vem antes?
Após o Call Stack ficar vazio:
- O Event Loop verifica a Microtask Queue
- Executa todas as microtasks
- Só então pega a próxima macrotask
Essa regra garante consistência em Promises.
Exemplo com múltiplas microtasks
Promise.resolve().then(() => { console.log("Microtask 1"); });
Promise.resolve().then(() =>
{
console.log("Microtask 2");
});
setTimeout(() =>
{
console.log("Macrotask");
}, 0);
Promise.resolve().then(() =>
{
console.log("Microtask 1");
}); // Saída: Microtask 1
Promise.resolve().then(() =>
{
console.log("Microtask 2");
});
// Saída: Microtask 2
setTimeout(() => {
console.log("Macrotask");
}, 0);
// Saída: Macrotask
⚠️ Cuidado com loops de microtasks
Criar microtasks continuamente pode bloquear o Event Loop.
function loopMicrotask()
{
Promise.resolve().then(loopMicrotask);
}
loopMicrotask();
Regra de ouro
Sempre lembre:
- Código síncrono → Call Stack
- Microtasks → prioridade máxima
- Macrotasks → depois
Resumo da aula para nunca mais esquecer
- Event Loop coordena a execução
- Microtasks têm prioridade sobre macrotasks
- Promises usam microtasks
- setTimeout usa macrotasks
- A ordem do console pode ser prevista
Na próxima aula, vamos aplicar tudo isso em exemplos reais com Promises e async/await, consolidando de vez o entendimento da assincronicidade.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Cuidados com o notebook
Utilizar seu notebook em camas, sofás ou qualquer superfície macia pode obstruir as entradas e saídas de ar, elevando a temperatura e provocando danos a diversos componentes. Utilize-o sempre sobre uma superfície rígida. Saiba mais aqui.
Inteligência artificial
O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.
Mega Man
A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.
Duck Hunt
Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".
ENIAC
O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.










