Baseline Widely available
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 Pfeil-Syntax definieren.
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
beginnen nur dann einen Ausdruck, wenn sie in einem Kontext erscheinen, der keine Anweisungen akzeptiert.
name
Optional
Der Funktionsname. Kann weggelassen werden, in diesem Fall ist die Funktion anonym. Der Name ist nur innerhalb des Funktionskörpers lokal.
paramN
Optional
Der Name eines formalen Parameters für die Funktion. Für die Syntax der Parameter siehe das Funktionen Referenz.
statements
Optional
Die Anweisungen, die den Körper der Funktion bilden.
Ein async function
Ausdruck ist dem async function
Deklaration sehr ähnlich und hat fast dieselbe 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, und es Ihnen ermöglicht, Top-Level Await nachzuahmen. Siehe auch das Kapitel über Funktionen für weitere Informationen.
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.
});
Asynchrone IIFE
Ein async
IIFE ermöglicht Ihnen die Verwendung von await
und for...await
in Kontexten, in denen Top-Level Await nicht verfügbar ist. Hier verwenden wir eine Pfeilfunktion, um das IIFE zu definieren, aber auch async 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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4