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 Event Loop sempre esvazia a fila de microtasks antes de pegar a próxima macrotask.

O que são Macrotasks?

Macrotasks são tarefas “maiores”, como:

  • setTimeout
  • setInterval
  • 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.then
  • Promise.catch
  • queueMicrotask

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();
Microtasks infinitas podem impedir macrotasks de rodar.

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.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

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.


Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.


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.


O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.


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.