for await...of

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.

Syntaxe

for await (variable of iterable) {
  instruction
}
variable
À chaque itération, la valeur d'une propriété différente est affectée à variable.
iterable
Un objet pour lequel on parcourt les propriétés itérables.

Exemples

Parcourir des itérables asynchrones

var asyncIterable = {
  [Symbol.asyncIterator]() {
    return {
      i: 0,
      next() {
        if (this.i < 3) {
          return Promise.resolve({ value: this.i++, done: false });
        }

        return Promise.resolve({ done: true });
      }
    };
  }
};

(async function() {
   for await (num of asyncIterable) {
     console.log(num);
   }
})();
// 0
// 1
// 2

Parcourir des générateurs asynchrones

Since async generators implement async Iterator protocol, they can be looped using for await...of

async function* asyncGenerator() {
  var i = 0;
  while (i < 3) {
    yield i++;
  }
}

(async function() {
  for await (num of asyncGenerator()) {
    console.log(num);
  }
})();
// 0
// 1
// 2

Spécifications

Spécification État Commentaires
ECMAScript Latest Draft (ECMA-262)
La définition de 'ECMAScript Language: The for-in, for-of, and for-await-of Statements' dans cette spécification.
Projet  

Compatibilité des navigateurs

No compatibility data found. Please contribute data for "javascript.statements.for_await_of" (depth: 1) to the MDN compatibility data repository.

Voir aussi

Étiquettes et contributeurs liés au document

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