Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SyntaxError: await ist nur in asynchronen Funktionen, asynchronen Generatoren und Modulen gültig
Der JavaScript-Fehler "await is only valid in async functions, async generators and modules" tritt auf, wenn einawait-Ausdruck außerhalb vonasynchronen Funktionen,Modulen oder anderen asynchronen Kontexten verwendet wird.
In diesem Artikel
Meldung
SyntaxError: await is only valid in async functions and the top level bodies of modules (V8-based)SyntaxError: await is only valid in async functions, async generators and modules (Firefox)SyntaxError: Unexpected identifier (Safari)
Fehlertyp
Was ist schiefgelaufen?
Die Ausführung von JavaScript blockiert nie: Einawait kann niemals die Ausführung des Programms blockieren. Stattdessen pausiert es die Ausführung der umgebenden asynchronen Aufgabe, während andere Aufgaben weiterlaufen können. Daher kannawait nicht in synchronen Aufgaben wie Funktionen, Generatorfunktionen oder auf der obersten Ebene von Skripten verwendet werden. Es ist nicht immer ersichtlich, ob die aktuelle Datei ein Skript oder ein Modul ist — weitere Informationen finden Sie imModule-Leitfaden.
Beispiele
>Top-Level await
Sie könnenawait nicht auf der obersten Ebene eines Skripts verwenden:
<script> await fetch("https://example.com"); // SyntaxError: await is only valid in async functions, async generators and modules</script>Stattdessen sollten Sie das Skript zu einem Modul machen:
<script type="module"> await fetch("https://example.com");</script>Asynchrone Rückrufe
Sie könnenawait nicht in einem synchronen Rückruf verwenden:
urls.forEach((url) => { await fetch(url); // SyntaxError: await is only valid in async functions, async generators and modules});Stattdessen sollten Sie den Rückruf asynchron machen. Weitere Erklärungen finden Sie imLeitfaden zur Verwendung von Promises.
Promise.all( urls.map(async (url) => { await fetch(url); }),);