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 :
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()dethis, si elle existe. Cela implémente le protocole d'élimination asynchrone et permet sa libération lorsqu'il est utilisé avecawait 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 :
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
- La déclaration
async function* - Protocoles d'itération