L'opérateur await permet d'attendre la résolution d'une promesse (Promise). Il ne peut être utilisé qu'au sein d'une fonction asynchrone (définie avec l'instruction async function).

Syntaxe

[rv] = await expression;
expression
Une promesse (Promise) ou toute autre valeur dont on souhaite attendre la résolution.
rv

La valeur de retour qui est celle de la promesse lorsqu'elle est résolue ou la valeur de l'expression lorsque celle-ci n'est pas une promesse.

Description

L'expression await interrompt l'exécution d'une fonction asynchrone et attend la résolution d'une promesse. Lorsque la promesse est résolue (tenue ou rompue), la valeur est renvoyée et l'exécution de la fonction asynchrone reprend. Si la valeur de l'expression n'est pas une promesse, elle est convertie en une promesse résolue ayant cette valeur.

Si la promesse est rompue, l'expression await lève une exception avec la raison.

Exemples

Si on passe une promesse à une expression await, celle-ci attendra jusqu'à la résolution de la promesse et renverra la valeur de résolution.

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

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

Si la valeur n'est pas une promesse, elle est convertie en une promesse résolue :

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

Si la promesse est rejetée, la raison est fournie avec l'exception.

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch (e) {
    console.log(e); // 30
  }
}
f3();

On peut également gérer le cas où la promesse est rejetée grâce à Promise.prototype.catch() :

var response = await maFonctionPromesse().catch(
  (err) => {
    console.log(err);
  }
);

Spécifications

Spécification État Commentaires
ECMAScript Latest Draft (ECMA-262)
La définition de 'async functions' dans cette spécification.
Projet  
ECMAScript 2018 (ECMA-262)
La définition de 'async functions' dans cette spécification.
Standard  
ECMAScript 2017 (ECMA-262)
La définition de 'async functions' 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 OuiFirefox Support complet 52IE ? Opera Support complet 42Safari Support complet 10.1WebView Android Support complet 55Chrome Android Support complet 55Edge Mobile Support complet OuiFirefox 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
Compatibilité inconnue  
Compatibilité inconnue
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

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