AsyncFunction() Konstruktor
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.
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
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-function-constructor> |