Na aula anterior, aprendemos que o JavaScript possui duas filas principais para tarefas assíncronas:
- Microtask Queue
- Macrotask Queue
Agora chegou a hora de ver isso acontecendo com exemplos reais, exatamente como você encontra no dia a dia.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Identificar microtasks e macrotasks no código
- Prever a ordem de execução no console
- Entender como Promises, timeouts e eventos interagem
- Evitar bugs causados por ordem inesperada de execução
Exemplo 1 — Promise vs setTimeout
Esse é o exemplo mais clássico — e mais importante.
console.log("Início");
setTimeout(() =>
{
console.log("Macrotask");
}, 0);
Promise.resolve().then(() =>
{
console.log("Microtask");
});
console.log("Fim");
Antes de rodar, tente prever 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
Exemplo 2 — Várias Promises encadeadas
Todas as Promises resolvidas entram na Microtask Queue.
console.log("Início");
Promise.resolve()
.then(() =>
{
console.log("Microtask 1");
})
.then(() =>
{
console.log("Microtask 2");
});
console.log("Fim");
console.log("Início"); // Saída: Início
console.log("Fim");
// Saída: Fim
// Microtasks executam em sequência
// Saída: Microtask 1
// Saída: Microtask 2
Exemplo 3 — setTimeout dentro de Promise
Aqui vemos microtasks criando macrotasks.
Promise.resolve().then(() =>
{
console.log("Microtask");
setTimeout(() =>
{
console.log("Macrotask criada pela microtask");
}, 0);
});
Promise.resolve().then(() =>
{
console.log("Microtask");
}); // Saída: Microtask
// Depois que a microtask termina
// Saída: Macrotask criada pela microtask
Exemplo 4 — Evento de clique (macrotask)
Eventos do DOM entram como macrotasks.
button.addEventListener("click", () =>
{
console.log("Clique");
Promise.resolve().then(() =>
{
console.log("Microtask do clique");
});
});
Ao clicar no botão:
console.log("Clique"); // Saída: Clique
console.log("Microtask do clique");
// Saída: Microtask do clique
Exemplo 5 — Armadilha comum
Misturar muitos then pode gerar comportamentos inesperados.
setTimeout(() =>
{
console.log("Timeout");
Promise.resolve().then(() =>
{
console.log("Microtask dentro do timeout");
});
}, 0);
setTimeout(() =>
{
console.log("Timeout"); });
// Saída: Timeout
// Microtask criada depois
// Saída: Microtask dentro do timeout
Regra prática para o dia a dia
- Código síncrono roda primeiro
- Depois, todas as microtasks
- Por último, uma macrotask por vez
Resumo da aula para nunca mais esquecer
- Microtasks têm prioridade máxima
- Promises usam microtasks
- setTimeout e eventos usam macrotasks
- O Event Loop sempre esvazia microtasks primeiro
- A ordem do console pode ser prevista
Na próxima aula, vamos aplicar esse conhecimento para entender profundamente Promises e async/await, sem mistério e sem “decorar”.
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?
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Mouse
O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.
Street Fighter 2
Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.
Mario em Donkey Kong
O personagem Mario surgiu pela primeira vez no mundo dos games em um jogo chamado Donkey Kong, lançado em 1981. Mario, que naquela época se chamava Jumpman, não era o personagem principal do jogo, mas ele se tornaria um dos mais famosos personagens do mundo dos games. Saiba mais.
Nintendo Wii
Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!










