Le mot-clé async function peut être utilisé pour définir une fonction asynchrone au sein d'une expression.

Note : Il est aussi possible de définir une fonction asynchrone en utilisant une instruction async function.

Syntaxe

async function [name]([param1[, param2[, ..., paramN]]]) {
   instructions
}

Paramètres

name
Le nom de la fonction. Il est facultatif et s'il n'est pas utilisé, la fonction est anonyme. Le nom utilisé est uniquement local pour le corps de la fonction.
paramN
Le nom d'un argument à passer à la fonction.
instructions
Les instructions qui composent le corps de la fonction.

Note : À partir d'ES2015 (ES6), il est aussi possible d'utiliser des fonctions fléchées pour les expressions de fonction asynchrone.

Description

Une expression async function est très proche, et partage quasiment la même syntaxe avec une instruction async function. La différence principale entre une expression async function et une instruction async function est qu'on peut omettre le nom de la fonction dans les expressions async function. On peut donc utiliser une expression async function afin de créer une IIFE (pour Immediately Invoked Function Expression) qu'on appelle au moment de sa définition. Voir également le chapitre sur les fonctions pour plus d'informations.

Exemples

Exemple simple

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
};

(async function(x) { // fonction asynchrone immédiatement appelée
  var a = resolveAfter2Seconds(20);
  var b = resolveAfter2Seconds(30);
  return x + await a + await b;
})(10).then(v => {
  console.log(v);  // affiche 60 après 2 secondes.
});

var add = async function(x) {
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  return x + a + b;
};

add(10).then(v => {
  console.log(v);  // affiche 60 après 4 secondes.
});

Spécifications

Spécification État Commentaires
ECMAScript Latest Draft (ECMA-262)
La définition de 'async function' dans cette spécification.
Projet  
ECMAScript 2018 (ECMA-262)
La définition de 'async function' dans cette spécification.
Standard  
ECMAScript 2017 (ECMA-262)
La définition de 'async function' dans cette spécification.
Standard Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
Support simpleChrome Support complet 55Edge Support complet 15Firefox Support complet 52IE Aucun support NonOpera Support complet 42Safari Support complet 10.1WebView Android Support complet 55Chrome Android Support complet 55Edge Mobile Support complet 15Firefox Android Support complet 52Opera Android Support complet 42Safari iOS Support complet 10.1Samsung Internet Android Support complet 6.0nodejs Support complet 7.6.0
Support complet 7.6.0
Support complet 7.0.0
Désactivée
Désactivée From version 7.0.0: this feature is behind the --harmony runtime flag.

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,