async function* Ausdruck

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Die async function* Schlüsselwörter können verwendet werden, um eine asynchrone Generatorfunktion innerhalb eines Ausdrucks zu definieren.

Sie können auch asynchrone Generatorfunktionen mithilfe der async function* Deklaration definieren.

Probieren Sie es aus

async function joinAll(generator) {
  let str = "";
  for await (const val of generator()) {
    str = str + val;
  }
  return str;
}

const str = joinAll(async function* () {
  yield await Promise.resolve("a");
  yield await Promise.resolve("b");
  yield await Promise.resolve("c");
});
console.log(str);
// Expected output: "abc"

Syntax

js
async function* (param0) {
  statements
}
async function* (param0, param1) {
  statements
}
async function* (param0, param1, /* …, */ paramN) {
  statements
}

async function* name(param0) {
  statements
}
async function* name(param0, param1) {
  statements
}
async function* name(param0, param1, /* …, */ paramN) {
  statements
}

Hinweis: Eine Ausdrucksanweisung kann nicht mit den Schlüsselwörtern async function beginnen, um Mehrdeutigkeiten mit einer async function* Deklaration zu vermeiden. Die async function Schlüsselwörter beginnen nur dann einen Ausdruck, wenn sie in einem Kontext erscheinen, der keine Anweisungen akzeptiert.

Parameter

name Optional

Der Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur lokal im Funktionskörper sichtbar.

paramN Optional

Der Name eines formalen Parameters für die Funktion. Für die Syntax der Parameter siehe die Funktionen-Referenz.

statements Optional

Die Anweisungen, die den Körper der Funktion ausmachen.

Beschreibung

Ein async function* Ausdruck ist einem async function* Deklaration sehr ähnlich und hat fast die gleiche Syntax. Der Hauptunterschied zwischen einem async function* Ausdruck und einer async function* Deklaration ist der Funktionsname, der in async function* Ausdrücken weggelassen werden kann, um anonyme Funktionen zu erstellen. Ein async function* Ausdruck kann als IIFE (Immediately Invoked Function Expression) verwendet werden, der sofort ausgeführt wird, sobald er definiert ist. Dies ermöglicht die Erstellung eines ad-hoc asynchronen iterierbaren Objekts. Weitere Informationen finden Sie im Kapitel über Funktionen.

Beispiele

Verwendung des async function* Ausdrucks

Das folgende Beispiel definiert eine unbenannte asynchrone Generatorfunktion und ordnet sie x zu. Die Funktion gibt das Quadrat ihres Arguments zurück:

js
const x = async function* (y) {
  yield Promise.resolve(y * y);
};
x(6)
  .next()
  .then((res) => console.log(res.value)); // 36

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-async-generator-function-definitions

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch