Top-Level Await em Módulos ES: Simplificando Código Assíncrono no JavaScript

Top-Level Await em Módulos ES: Simplificando Código Assíncrono no JavaScript

A necessidade de criar funções IIFE ((async () => { ... })()) para executar código assíncrono no escopo raiz do arquivo sempre gerou boilerplate desnecessário. Com o recurso Top-Level Await nativo do ECMAScript (ES2022), é possível utilizar a palavra-chave await diretamente no nível superior de módulos JavaScript (.mjs ou projetos com "type": "module").

JavaScript

// conexao.mjs (Módulo ES)

// Simulação de uma busca assíncrona de configurações de banco de dados
const carregarConfiguracao = () =>
  new Promise((resolve) => {
    setTimeout(() => {
      resolve({ host: 'localhost', porta: 5432, db: 'producao' });
    }, 1000);
  });

console.log('Iniciando carregamento de configurações...');

// Uso direto do await no escopo raiz sem IFFE ou função envolvente
const config = await carregarConfiguracao();

console.log(`[Sucesso] Conectado ao banco '${config.db}' em ${config.host}:${config.porta}`);

// Exporta os dados já resolvidos para outros módulos da aplicação
export const dbConfig = config;

Pontos-chave

  • Restrição de Módulo ES: O recurso funciona exclusivamente em ES Modules (arquivos .mjs, tags <script type="module"> no navegador ou projetos Node.js com "type": "module" no package.json).
  • Bloqueio Amigável de Importação: Módulos que importam um arquivo com Top-Level Await aguardam a resolução da Promise antes de executar o próprio código, garantindo dependências prontas.
  • Eliminação de Boilerplate IIFE: Substitui o padrão antigo (async () => { ... })() por uma sintaxe limpa, linear e mais fácil de ler no nível do módulo.
  • Tratamento de Erros: Exceções lançadas por um await no nível superior devem ser capturadas com blocos try/catch padrão para evitar rejeições não tratadas no processo.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *