Top-Level Await
Die Möglichkeit, await direkt auf oberster Ebene eines ES-Moduls zu verwenden, ohne es in eine Async-Funktion einpacken zu müssen. Das Modul „pausiert", bis das Await abgeschlossen ist, und Module, die es importieren, warten mit — nützlich für asynchrone Initialisierung.
Das alte Problem: await durfte nur innerhalb von async-Funktionen stehen, sodass asynchrone Initialisierung auf Modulebene hässliche Umwege erforderte (eine selbstaufrufende Async-Funktion oder der Export eines Promise). Top-Level Await (ES2022, in Modulen) erlaubt const db = await openDatabase() direkt im Modul. Mechanik: Das Modul wird „asynchron" — seine Ausführung pausiert beim Await, und alle Module, die es importieren, warten, bis es fertig ist, bevor sie laufen → eine saubere Reihenfolge für asynchrone Abhängigkeiten. Anwendungsfall: eine Datenbankverbindung initialisieren, eine Konfiguration oder ein WASM-Modul laden, oder eine Abhängigkeit dynamisch auswählen, bevor die Exports des Moduls bereitstehen. Warnung: Es verzögert alle abhängigen Module, also bewusst einsetzen (kann den Start verlangsamen, wenn missbraucht). Nur in ES-Modulen, nicht in CommonJS. Hängt zusammen mit ES-Modulen im Browser und Dynamic Import.