async function expression
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
Die Schlüsselwörterasync function
können verwendet werden, um eine asynchrone Funktion innerhalb eines Ausdrucks zu definieren.
Sie können auch asynchrone Funktionen mit derasync function
Deklaration oder derPfeil-Syntax definieren.
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:EineAusdrucksanweisung kann nicht mit den Schlüsselwörternasync function
beginnen, um Mehrdeutigkeiten mit einerasync function
Deklaration zu vermeiden. Die Schlüsselwörterasync function
beginnen 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 Funktionanonym. Der Name ist nur innerhalb des Funktionskörpers lokal.
paramN
OptionalDer Name eines formalen Parameters für die Funktion. Für die Syntax der Parameter siehe dasFunktionen Referenz.
statements
OptionalDie Anweisungen, die den Körper der Funktion bilden.
Beschreibung
Einasync function
Ausdruck ist demasync function
Deklaration sehr ähnlich und hat fast dieselbe Syntax. Der Hauptunterschied zwischen einemasync function
Ausdruck und einerasync function
Deklaration ist derFunktionsname, der inasync function
Ausdrücken weggelassen werden kann, umanonyme Funktionen zu erstellen. Einasync function
Ausdruck kann alsIIFE (Immediately Invoked Function Expression) verwendet werden, die ausgeführt wird, sobald sie definiert ist, und es Ihnen ermöglicht,Top-Level Await nachzuahmen. Siehe auch das Kapitel überFunktionen für weitere Informationen.
Beispiele
Verwendung eines async function Ausdrucks
function resolveAfter2Seconds(x) { return new Promise((resolve) => { setTimeout(() => { resolve(x); }, 2000); });}// async function expression assigned to a variableconst add = async function (x) { const a = await resolveAfter2Seconds(20); const b = await resolveAfter2Seconds(30); return x + a + b;};add(10).then((v) => { console.log(v); // prints 60 after 4 seconds.});// async function expression used as an IIFE(async function (x) { const p1 = resolveAfter2Seconds(20); const p2 = resolveAfter2Seconds(30); return x + (await p1) + (await p2);})(10).then((v) => { console.log(v); // prints 60 after 2 seconds.});
Asynchrone IIFE
Einasync
IIFE ermöglicht Ihnen die Verwendung vonawait
undfor...await
in Kontexten, in denenTop-Level Await nicht verfügbar ist. Hier verwenden wir einePfeilfunktion, um das IIFE zu definieren, aber auchasync function
Ausdrücke können verwendet werden.
const getFileStream = async (url) => { // implementation};(async () => { const stream = await getFileStream("https://domain.name/path/file.ext"); for await (const chunk of stream) { console.log({ chunk }); }})();
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-async-function-definitions |
Browser-Kompatibilität
Siehe auch
MDN-Feedback-Box
Diese Seite wurde automatisch aus dem Englischen übersetzt.