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
Promises sempre têm prioridade sobre setTimeout.

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
Mesmo dentro de eventos, microtasks mantêm prioridade.

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
Criar microtasks infinitas pode travar o fluxo de eventos.

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.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.


O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.


A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.


Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.


Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.