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
awaitfora 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
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
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
await no topo pode atrasar o carregamento de outros módulos. Comparação mental
awaitem 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
awaitfora 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.
Você Sabia?
Nintendo Entertainment System
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.
Playstation
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.
Senhas
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.
Civilization
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.
Mega Man
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.










