JavaScript · Intermediário · Inglês · Técnico
top-level await
Uso de await direto no corpo de um módulo ES, fora de qualquer função async. O módulo só termina de carregar quando a promise resolve, e quem o importa espera.
Onde usar
Aparece em scripts de inicialização, como ler uma configuração ou abrir uma conexão antes de exportar. Em code review, pesa o custo: um await lento atrasa todos os módulos que dependem dele.
Em código
// config.mjs
import { readFile } from 'node:fs/promises';
const txt = await readFile('c.json', 'utf8');
export const cfg = JSON.parse(txt);
// quem importa config.mjs espera o awaitExemplos
With top-level await I load the config before exporting it.
Com top-level await eu carrego a configuração antes de exportá-la.
Top-level await doesn't work in a CommonJS file.
Top-level await não funciona num arquivo CommonJS.
Cuidado
Usar em arquivo CommonJS, onde causa erro de sintaxe.