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

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: 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:

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
async function* expression

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch