L'instruction for await...of permet de créer une boucle qui parcourt les objets itérables asynchrones de la même façon qu'on parcourt les itérables synchrones (tels que les chaînes de caractères (String), les tableaux Array, les objets semblables aux tableaux comme arguments ou NodeList), TypedArray, Map, Set. Cette instruction invoque un mécanisme d'itération spécifique et les instructions à exécuter pour chaque propriété de l'objet.
À chaque itération, la valeur d'une propriété différente est affectée à variable. Cette variable peut être déclarée avec const, let ou var.
Un objet pour lequel on parcourt les propriétés itérables.
Parcourir des itérables asynchrones
Parcourir des générateurs asynchrones
Les générateurs asynchrones implémentent le protocole d'itérateur asynchrone et on peut donc les parcourir avec for await...of:
Pour prendre un exemple plus concret, on peut parcourir les données fournies par une API avec un générateur asynchrone grâce à for await... of. Dans cet exemple, on commence par créer un itérateur asynchrone à partir d'un flux de données puis on utilise cet itérateur et for await...of afin de calculer la taille de la réponse fournie par l'API :
// On récupère les données d'une URL et
// on calcule la taille de la réponse
// avec un générateur asynchrone
// La taille de la réponse, exprimée en octets.
// La boucle for-await-of qui parcourt, de façon asynchrone,
// chaque portion de la réponse.
console.log(`Taille de la réponse : ${responseSize} octets`);
La définition de 'ECMAScript Language: The for-in, for-of, and for-await-of Statements' dans cette spécification. Projet
Chrome Support complet 63 Edge Aucun support Non Firefox Support complet 57 IE Aucun support Non Opera Support complet 50 Safari Support complet 11 WebView Android Support complet 63 Chrome Android Support complet 63 Firefox Android Support complet 57 Opera Android Support complet 46 Safari iOS ? Samsung Internet Android Support complet 8.0 nodejs Support complet 10.0.0
Aucun support 8.10.0 — 10.0.0
Désactivée From version 8.10.0 until version 10.0.0 (exclusive): this feature is behind the --harmony-async-iteration runtime flag.
Instructions/for...of