async function* expression
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
Die Schlüsselwörter async function* können verwendet werden, um eine asynchrone Generatorfunktion in einem Ausdruck 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 += 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 Mehrdeutigkeiten mit einer async function* Deklaration zu vermeiden. Die Schlüsselwörter async function leiten nur dann einen Ausdruck ein, wenn sie in einem Kontext erscheinen, der keine Anweisungen akzeptiert.
Parameter
nameOptional-
Der Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur lokal im Funktionskörper gültig.
paramNOptional-
Der Name eines formalen Parameters für die Funktion. Zur Syntax der Parameter siehe die Funktionsreferenz.
statementsOptional-
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 (Sofortig Ausgeführter Funktionsausdruck) verwendet werden, der sofort ausgeführt wird, sobald er definiert ist, wodurch Sie ein ad-hoc asynchrones iterierbares Objekt erstellen können. Weitere Informationen finden Sie auch im Kapitel über Funktionen.
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> |
Browser-Kompatibilität
Loading…