Até agora, entendemos que o JavaScript:

  • Executa código de forma síncrona
  • Usa o Call Stack para controlar a execução
  • Executa uma coisa por vez

Mas então surge a grande pergunta:

como o JavaScript lida com tarefas assíncronas se ele executa uma coisa por vez?

A resposta está no Event Loop.

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Entender o papel do Event Loop
  • Compreender como tarefas assíncronas são tratadas
  • Visualizar a interação entre Call Stack e filas
  • Deixar de tratar o Event Loop como mágica

O problema que o Event Loop resolve

Imagine este código:

 
  console.log("Início");
  setTimeout(() => 
  {
    console.log("Timeout");
  }, 0);
  console.log("Fim");

Qual será a ordem?

Resultado no console

 
  console.log("Início"); // Saída: Início
  console.log("Fim");
  // Saída: Fim
  // Depois...
  // Saída: Timeout

Mesmo com setTimeout igual a 0, o código dentro dele não executa imediatamente.

Isso só faz sentido quando entendemos o Event Loop.

As peças do quebra-cabeça

Para entender o Event Loop, precisamos conhecer três componentes:

  • Call Stack
  • Task Queue (fila de tarefas)
  • Event Loop

Call Stack (relembrando)

O Call Stack:

  • Executa código síncrono
  • Uma função por vez
  • Bloqueia enquanto executa

Task Queue (fila de tarefas)

A Task Queue é onde ficam:

  • Callbacks de setTimeout
  • Eventos de clique
  • Eventos do DOM

Essas tarefas ficam esperando para serem executadas.

O papel do Event Loop

O Event Loop é um processo que:

  • Observa o Call Stack
  • Verifica se ele está vazio
  • Move tarefas da fila para a pilha

Ele nunca executa código diretamente.

O Event Loop é um gerente, não um executor.

Passo a passo do exemplo

Vamos acompanhar o código:

  • console.log("Início") entra no Call Stack
  • setTimeout é registrado
  • O callback vai para a Task Queue
  • console.log("Fim") executa
  • Call Stack fica vazio
  • Event Loop move o callback do timeout para o Call Stack

Por isso o Timeout vem por último.

Importante: tempo zero não é imediato

setTimeout(fn, 0) não significa execução imediata.

Significa:

Execute quando o Call Stack estiver livre.

JavaScript continua sendo single-thread

Mesmo com Event Loop:

  • Uma função por vez
  • Uma execução por vez

O Event Loop apenas organiza a ordem.

Por que isso é tão importante?

Porque o Event Loop explica:

  • Por que operações longas travam a página
  • Por que callbacks existem
  • Por que Promises existem
  • Por que async/await existe

Nada disso é mágica.

Resumo da aula para nunca mais esquecer

  • JavaScript executa código pelo Call Stack
  • Tarefas assíncronas vão para filas
  • O Event Loop gerencia a ordem
  • Callbacks só executam quando a pilha está vazia
  • Tempo zero não é execução imediata

Na próxima aula, vamos aprofundar esse modelo entendendo Microtasks e Macrotasks — o detalhe fino que diferencia código bom de código excelente.


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 primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.


Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.


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.


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.


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.