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 asynchrone Generatorfunktionen auch mit 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; } joinAll(async function* () { yield await Promise.resolve("a"); yield await Promise.resolve("b"); yield await Promise.resolve("c"); }).then((str) => console.log(str)); // Expected output: "abc"
Syntax
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 Mehrdeutigkeit mit einer async function*
Deklaration zu vermeiden. Die Schlüsselwörter async function
starten nur dann einen Ausdruck, wenn sie in einem Kontext erscheinen, der keine Anweisungen akzeptiert.
Parameter
name
OptionalDer Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur lokal für den Funktionskörper.
paramN
OptionalDer Name eines formalen Parameters für die Funktion. Für die Syntax der Parameter, siehe die Leitfaden zu Funktionen.
statements
OptionalDie Anweisungen, die den Körper der Funktion bilden.
Beschreibung
Ein async function*
Ausdruck ist dem 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 (sofort aufgerufener Funktionsausdruck) verwendet werden, der ausgeführt wird, sobald er definiert ist, was es Ihnen ermöglicht, ein ad-hoc asynchrones iterierbares Objekt zu erstellen. Siehe auch das Kapitel über Funktionen für weitere Informationen.
Beispiele
Verwendung des async function* Ausdrucks
Das folgende Beispiel definiert eine unbenannte asynchrone Generatorfunktion und weist sie x
zu. Die Funktion liefert das Quadrat ihres Arguments:
const x = async function* (y) { yield Promise.resolve(y * y); }; x(6) .next() .then((res) => console.log(res.value)); // 36
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-async-generator-function-definitions |