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

AsyncIterator

Baseline Widely available *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨janvier 2020⁩.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

Un objet AsyncIterator est un objet conforme au protocole d'itérateur asynchrone en fournissant une méthode next() qui retourne une promesse résolue par un objet de résultat d'itération. L'objet AsyncIterator.prototype est un objet global caché dont héritent tous les itérateurs asynchrones natifs. Il fournit une méthode [Symbol.asyncIterator]() qui retourne l'objet itérateur asynchrone lui‑même, rendant ainsi l'itérateur asynchrone également un itérable asynchrone.

Notez que AsyncIterator n'est pas un objet global, même si la proposition des assistants d'itérateurs asynchrones (angl.) prévoit d'introduire des APIs similaires à l'avenir. L'objet AsyncIterator.prototype partagé par tous les itérateurs asynchrones natifs peut être obtenu avec le code suivant :

js
const AsyncIteratorPrototype = Object.getPrototypeOf(
  Object.getPrototypeOf(Object.getPrototypeOf((async function* () {})())),
);

Description

Actuellement, le seul itérateur asynchrone natif de JavaScript est l'objet AsyncGenerator retourné par les fonctions génératrices asynchrones. Certaines API Web fournissent également des itérateurs asynchrones natifs, par exemple celui d'un ReadableStream.

Chacun de ces itérateurs asynchrones possède un prototype distinct, qui définit la méthode next() utilisée par cet itérateur particulier. Tous ces prototypes héritent de AsyncIterator.prototype, lequel fournit une méthode [Symbol.asyncIterator]() retournant l'itérateur asynchrone lui‑même, rendant l'itérateur également itérable asynchrone.

Note : AsyncIterator.prototype n'implémente pas [Symbol.iterator](), donc les itérateurs asynchrones ne sont pas des itérables synchrones par défaut.

Méthodes d'instance

AsyncIterator.prototype[Symbol.asyncDispose]()

Appelle et attend la méthode return() de this, si elle existe. Cela implémente le protocole d'élimination asynchrone et permet sa libération lorsqu'il est utilisé avec await using.

AsyncIterator.prototype[Symbol.asyncIterator]()

Retourne l'objet itérateur asynchrone lui‑même. Cela permet aux objets itérateurs asynchrones d'être également itérables asynchrones.

Exemples

Utiliser un itérateur asynchrone comme itérable asynchrone

Tous les itérateurs asynchrones natifs sont aussi itérables asynchrones, vous pouvez donc les utiliser dans une boucle for await...of :

js
const asyncIterator = (async function* () {
  yield 1;
  yield 2;
  yield 3;
})();
(async () => {
  for await (const value of asyncIterator) {
    console.log(value);
  }
})();
// Affiche : 1, 2, 3

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-asynciteratorprototype

Compatibilité des navigateurs

Voir aussi