Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SyntaxError: await is only valid in async functions, async generators and modules

Die JavaScript-Ausnahme „await is only valid in async functions, async generators and modules“ tritt auf, wenn ein await-Ausdruck außerhalb von async-Funktionen, Modulen oder anderen async-Kontexten verwendet wird.

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

SyntaxError.

Was ist schiefgelaufen?

Die Ausführung von JavaScript ist niemals blockierend: await kann die Ausführung des Programms nicht blockieren. Stattdessen pausiert es die Ausführung der umgebenden async-Aufgabe, während andere Aufgaben weiterlaufen können. Daher kann await nicht in synchronen Aufgaben verwendet werden, etwa in Funktionen, Generatorfunktionen oder auf der obersten Ebene von Skripten. Ob die aktuelle Datei ein Skript oder ein Modul ist, ist nicht immer offensichtlich. Weitere Informationen finden Sie im Leitfaden zu Modulen.

Beispiele

Top-Level-await

Auf der obersten Ebene eines Skripts können Sie await nicht verwenden:

html
<script>
  await fetch("https://example.com");
  // SyntaxError: await is only valid in async functions, async generators and modules
</script>

Machen Sie das Skript stattdessen zu einem Modul:

html
<script type="module">
  await fetch("https://example.com");
</script>

Async-Callbacks

In einem synchronen Callback können Sie await nicht verwenden:

js
urls.forEach((url) => {
  await fetch(url);
  // SyntaxError: await is only valid in async functions, async generators and modules
});

Machen Sie den Callback stattdessen async. Weitere Erläuterungen finden Sie im Leitfaden zur Verwendung von Promises.

js
Promise.all(
  urls.map(async (url) => {
    await fetch(url);
  }),
);

Siehe auch