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?

O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.


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.


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.


A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.


A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.