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?

Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.


Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.


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.


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.


O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.