Top-level Await

JavaScript 🟡 Mid

Definition

Permet d'utiliser await directement au niveau module (ESM) sans wrapper async. Le module devient asynchrone et les modules qui l'importent attendent sa resolution.

Analogie

Pouvoir commander directement au drive-in sans devoir d'abord entrer dans le restaurant (la fonction async).

Exemple de code

// config.mjs (ESM)
const res = await fetch('/config.json');
export const config = await res.json();

// app.mjs
import { config } from './config.mjs';
// config est deja resolue ici

Cas d'usage

Charger une configuration ou initialiser une connexion BD au demarrage d'un module ESM.

Anti-pattern

L'utiliser dans un module importe par beaucoup d'autres : ca bloque le chargement de tous les dependants.
#core#ES2022#modules