Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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.
Une déclaration async function* définit une fonction génératrice asynchrone, qui renvoie un objet AsyncGenerator.
Il est aussi possible de définir des fonctions génératrices asynchrones à l'aide du constructeur AsyncGeneratorFunction() ou d'une expression async function*.
Note : Il n'existe pas de notation équivalente aux fonctions fléchées pour les fonctions génératrices asynchrones.
Le nom de la fonction.
param FacultatifLe nom d'un paramètre formel pour la fonction.
instructions FacultatifLes instructions formant le corps de la fonction.
Une fonction génératrice asynchrone combine les fonctionnalités des fonctions asynchrones et des fonctions génératrices. Les deux mots-clés await et yield peuvent être utilisés dans le corps d'une telle fonction. Cela permet de gérer des tâches asynchrones de façon concise avec await, tout en profitant de l'exécution à la demande permise par les fonctions génératrices.
À la différence des fonctions génératrices normales déclarées avec function*, une fonction génératrice asynchrone renvoie un objet AsyncGenerator qui suit le protocole itérable asynchrone. Chaque appel à next() renvoie une promesse qui est résolue avec l'objet résultant de l'itérateur.
Lorsqu'une promesse est déclenchée depuis un générateur asynchrone, l'état de la promesse qui est le résultat de l'itérateur correspondra à celui de la promesse déclenchée. On aura par exemple :
Qui affichera 1 dans la console, car la promesse ainsi générée déclenche une erreur et le résultat dans l'itérateur déclenche une erreur également. La propriété value du résultat d'un générateur asynchrone résolu ne sera pas une autre promesse.
Les fonctions génératrices asynchrones produisent toujours des promesses comme résultat, même si chaque étape yield est synchrone.
Dans cet exemple, on lit une suite de fichiers en accédant à leur contenu uniquement lorsqu'on le demande, en utilisant le module Node.js fs/promises.
| ECMAScript® 2027 Language Specification # sec-async-generator-function-definitions |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 17 févr. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.