Constructeur AsyncFunction()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2017.
Attention : Les arguments passés à ce constructeur sont analysés et exécutés dynamiquement en tant que JavaScript. Les API de ce type sont connues sous le nom de points d'injection et peuvent potentiellement être un vecteur pour des attaques de cross-site-scripting (XSS).
Vous pouvez atténuer ce risque en passant toujours des objets TrustedScript au lieu de chaînes de caractères et en appliquant des types de confiance.
Voir les considérations de sécurité dans la référence du constructeur Function() pour plus d'informations.
Le constructeur AsyncFunction() crée des objets AsyncFunction.
Notez que AsyncFunction n'est pas un objet global. Il peut être obtenu avec le code suivant :
const AsyncFunction = async function () {}.constructor;
Le constructeur AsyncFunction() n'est pas destiné à être utilisé directement, et toutes les mises en garde mentionnées dans la description de Function() s'appliquent à AsyncFunction().
Syntaxe
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)
Note :
AsyncFunction() peut être appelé avec ou sans new. Les deux créent une nouvelle instance de AsyncFunction.
Paramètres
Voir Function().
Exemples
On notera que ces exemples omettent l'utilisation des types de confiance pour des raisons de concision. Pour un code montrant l'approche recommandée, voir Utiliser TrustedScript dans eval().
Créer une fonction asynchrone à partir du constructeur AsyncFunction()
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); // affiche 30 après 4 secondes
});
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-function-constructor> |