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 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
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:
Ein Ausdrucksbefehl kann nicht mit den Schlüsselwörtern async function
beginnen, um Verwechslungen mit einer async function*
Deklaration zu vermeiden. Die Schlüsselwörter async function
beginnen nur dann einen Ausdruck, wenn sie in einem Kontext erscheinen, der keine Befehle akzeptieren kann.
Parameter
name
Optional-
Der Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur lokal im Funktionskörper vorhanden.
paramN
Optional-
Der Name eines formalen Parameters für die Funktion. Siehe den Funktions-Leitfaden für die Syntax der Parameter.
statements
Optional-
Die 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 (Immediately Invoked Function Expression) verwendet werden, die ausgeführt wird, sobald sie definiert ist, wodurch Sie ein ad-hoc asynchrones iterierbares Objekt erstellen können. Siehe auch das Kapitel über Funktionen für weitere Informationen.
Beispiele
Verwendung von async function* Ausdruck
Das folgende Beispiel definiert eine unbenannte asynchrone Generatorfunktion und weist sie x
zu. Die Funktion liefert das Quadrat ihres Arguments zurück:
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
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
async function* expression |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support