Até agora, sempre usamos await dentro de funções async.

Isso funciona muito bem — mas criava uma limitação artificial:

por que não posso usar await diretamente no arquivo?

O top-level await veio exatamente para resolver isso.

🎯 Objetivo da aula

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

  • Entender o que é top-level await
  • Saber onde ele pode ser usado
  • Usar await fora de funções
  • Evitar erros comuns de ambiente
  • Escrever módulos mais simples e legíveis

O problema antes do top-level await

Antes, se quiséssemos usar await, precisávamos fazer algo assim:

 
  async function iniciar() 
  { 
    const resposta = await fetch("/api/dados"); 
    const dados = await resposta.json(); 
    console.log(dados); 
  }
  iniciar();

Isso criava:

  • funções artificiais
  • mais indentação
  • código menos direto

O que é top-level await?

Top-level await permite usar await:

diretamente no escopo principal de um módulo JavaScript.

Sem precisar envolver em uma função async.

Exemplo simples

 
  const resposta = await fetch("/api/dados"); 
  const dados = await resposta.json();
  console.log(dados);

Isso agora é válido — desde que este arquivo seja um módulo.

Onde o top-level await funciona?

Ele funciona apenas em:

  • arquivos JavaScript tratados como módulos
  • <script type="module">
  • módulos ES no Node.js
Top-level await NÃO funciona em scripts clássicos.

Exemplo no navegador

 
  <script type="module"> const resposta = await fetch("/api/dados"); 
  const dados = await resposta.json();
  console.log(dados);

Aqui, o navegador entende que o código é modular e permite o uso de await.

O que acontece por baixo dos panos?

Quando você usa top-level await:

  • o módulo é carregado
  • a execução é pausada no await
  • outros módulos aguardam a finalização
Top-level await bloqueia apenas o módulo atual, não o JavaScript inteiro.

Exemplo com import dependente

Arquivo config.js:

 
  export const config = await fetch("/config.json").then(r => r.json()); 

Arquivo app.js:

 
    import { config } from "./config.js";
    console.log(config);
    // Saída será o conteúdo do config.json

O JavaScript garante que config esteja pronto antes do uso.

Vantagens reais

  • menos código cerimonial
  • arquivos mais legíveis
  • fluxo linear de execução
  • melhor organização de módulos

Cuidados importantes

Use top-level await com consciência:

  • não abuse em módulos muito grandes
  • evite esperas longas no carregamento inicial
  • trate erros adequadamente
Um await no topo pode atrasar o carregamento de outros módulos.

Comparação mental

  • await em função → controle local
  • top-level await → controle de módulo

Cada um tem seu lugar.

Resumo da aula para nunca mais esquecer

  • Top-level await permite await fora de funções
  • Só funciona em módulos
  • Deixa o código mais direto
  • Bloqueia apenas o módulo atual
  • Deve ser usado com moderação

Na próxima aula, vamos conhecer estruturas especiais para memória e performance: WeakMap e WeakSet.


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?

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.


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 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.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


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".