AsyncFunction() Konstruktor
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.
Warnung: Die an diesen Konstruktor übergebenen Argumente werden dynamisch als JavaScript geparst und ausgeführt. Solche APIs sind bekannt als Injection-Senken und können potenziell ein Angriffsvektor für Cross-Site-Scripting (XSS) Angriffe sein.
Sie können dieses Risiko mindern, indem Sie immer TrustedScript Objekte anstelle von Zeichenfolgen übergeben und vertrauenswürdige Typen erzwingen.
Weitere Informationen finden Sie unter Sicherheitsüberlegungen in der Referenz zum Function() Konstruktor.
Der AsyncFunction() Konstruktor erstellt AsyncFunction Objekte.
Beachten Sie, dass AsyncFunction kein globales Objekt ist. Es kann mit dem folgenden Code erhalten werden:
const AsyncFunction = async function () {}.constructor;
Der AsyncFunction() Konstruktor ist nicht dazu gedacht, direkt verwendet zu werden, und alle in der Beschreibung von Function() erwähnten Warnhinweise gelten für AsyncFunction().
Syntax
new AsyncFunction(functionBody)
new AsyncFunction(arg1, functionBody)
new AsyncFunction(arg1, arg2, functionBody)
new AsyncFunction(arg1, arg2, /* …, */ argN, functionBody)
AsyncFunction(functionBody)
AsyncFunction(arg1, functionBody)
AsyncFunction(arg1, arg2, functionBody)
AsyncFunction(arg1, arg2, /* …, */ argN, functionBody)
Hinweis:
AsyncFunction() kann mit oder ohne new aufgerufen werden. Beide Aufrufe erzeugen eine neue AsyncFunction Instanz.
Parameter
Siehe Function().
Beispiele
Beachten Sie, dass in diesen Beispielen zur Kürze auf die Verwendung vertrauenswürdiger Typen verzichtet wird. Für Code, der den empfohlenen Ansatz zeigt, siehe Verwendung von TrustedScript in eval().
Erstellen einer asynchronen Funktion mit einem AsyncFunction() Konstruktor
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
const AsyncFunction = async function () {}.constructor;
const fn = new AsyncFunction(
"a",
"b",
"return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);
fn(10, 20).then((v) => {
console.log(v); // prints 30 after 4 seconds
});
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-async-function-constructor> |