Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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 objetAsyncIterator est un objet conforme auprotocole d'itérateur asynchrone en fournissant une méthodenext() qui retourne une promesse résolue par un objet de résultat d'itération. L'objetAsyncIterator.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 unitérable asynchrone.
Notez queAsyncIterator n'estpas un objet global, même si laproposition des assistants d'itérateurs asynchrones(angl.) prévoit d'introduire des APIs similaires à l'avenir. L'objetAsyncIterator.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* () {})())),);Dans cet article
Description
Actuellement, le seul itérateur asynchrone natif de JavaScript est l'objetAsyncGenerator retourné par lesfonctions génératrices asynchrones. Certaines API Web fournissent également des itérateurs asynchrones natifs, par exemple celui d'unReadableStream.
Chacun de ces itérateurs asynchrones possède un prototype distinct, qui définit la méthodenext() utilisée par cet itérateur particulier. Tous ces prototypes héritent deAsyncIterator.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 desité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 leprotocole 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 bouclefor 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, 3Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-asynciteratorprototype> |
Compatibilité des navigateurs
Voir aussi
- La déclaration
async function* - Protocoles d'itération