Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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 :

js
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

js
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()

js
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

Compatibilité des navigateurs

Voir aussi