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.
Depuis January 2024, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La méthode statique Array.fromAsync() crée une nouvelle instance d'Array (copie superficielle) à partir d'un objet itérable asynchrone, d'un objet itérable, ou d'un objet semblable à un tableau.
Un objet itérable asynchrone, itérable ou semblable à un tableau à convertir en tableau.
mapFn FacultatifUne fonction appelée sur chaque élément du tableau. Si elle est fournie, chaque valeur à ajouter au tableau est d'abord transmise à cette fonction, et la valeur de retour de mapFn est ajoutée au tableau à la place (après avoir été attendue). La fonction est appelée avec les arguments suivants :
elementL'élément en cours de traitement dans le tableau. Si items est un itérable synchrone ou un objet semblable à un tableau, tous les éléments sont d'abord attendus, et element ne sera jamais un thenable. Si items est un itérable asynchrone, chaque valeur produite est transmise telle quelle.
indexL'indice de l'élément en cours de traitement dans le tableau.
thisArg FacultatifLa valeur à utiliser comme this lors de l'exécution de la fonction mapFn.
Une nouvelle promesse (Promise) dont la valeur de retour est une nouvelle instance de Array.
Array.fromAsync() permet de créer des tableaux à partir :
Array.fromAsync() parcourt l'itérable asynchrone d'une manière très similaire à for await...of. Array.fromAsync(items) est généralement équivalent au code suivant, si items est un itérable asynchrone ou synchrone :
Array.fromAsync() est presque équivalent à Array.from() en termes de comportement, à l'exception des points suivants :
Array.fromAsync() et Promise.all() peuvent toutes deux transformer un itérable de promesses dans une promesse d'un tableau. Cependant, il existe deux différences majeures :
Lorsque items est un itérable asynchrone dont chaque résultat value est aussi une promesse, ces promesses sont ajoutées au tableau résultant sans être attendues. Cela correspond au comportement de for await...of.
Note : En pratique, il est rare de rencontrer un objet itérable asynchrone qui produit des promesses, car si vous l'implémentez avec une fonction génératrice asynchrone, l'expression yield désempaquète automatiquement les promesses.
Lorsque items est un itérable synchrone ou un objet semblable à un tableau, l'entrée et la sortie de mapFn sont attendues en interne par Array.fromAsync().
Lorsque items est un itérable asynchrone, l'entrée de mapFn n'est pas attendue, mais la sortie l'est. En utilisant la même fonction createAsyncIter que ci-dessus :
Curieusement, cela signifie que Array.fromAsync(createAsyncIter()) n'est pas équivalent à Array.fromAsync(createAsyncIter(), (element) => element), car la seconde attend chaque valeur produite, alors que la première ne le fait pas.
Array.fromAsync() attend chaque valeur produite par l'objet de façon séquentielle. Promise.all() attend toutes les valeurs en parallèle.
Comme pour for await...of, si l'objet parcouru est un objet itérable synchrone et qu'une erreur est levée pendant l'itération, la méthode return() de l'itérateur sous-jacent ne sera pas appelée, donc l'itérateur ne sera pas fermé.
Si vous devez fermer l'itérateur, vous devez utiliser une boucle for...of à la place, et attendre chaque valeur manuellement.
| ECMAScript® 2027 Language Specification # sec-array.fromasync |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 10 déc. 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.