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 April 2017.
Die Schlüsselwörter async function können verwendet werden, um eine asynchrone Funktion innerhalb eines Ausdrucks zu definieren.
Sie können auch asynchrone Funktionen mit der async function Deklaration oder der Pfeilsyntax 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:
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 akzeptieren kann.
Parameter
nameOptional-
Der Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur lokal im Funktionskörper bekannt.
paramNOptional-
Der Name eines formalen Parameters der Funktion. Für die 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 (Immediately Invoked Function Expression) verwendet werden, die ausgeführt wird, sobald sie definiert ist, was es Ihnen ermöglicht, top-level await nachzuahmen. Siehe auch das Kapitel über Funktionen für weitere Informationen.
Beispiele
Verwendung des async function Ausdrucks
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
// async function expression assigned to a variable
const 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.
});
Spezifikationen
| Specification |
|---|
| ECMAScript Language Specification # sec-async-function-definitions |
Browser-Kompatibilität
BCD tables only load in the browser