Array.fromAsync()

JavaScript 🟡 Mid

Définition

Méthode statique (Stage 4, listée par TC39 pour ES2026) qui construit un tableau à partir d'un itérable asynchrone, d'un itérable synchrone de promesses ou d'un objet array-like, et renvoie une promesse du tableau. Chaque valeur est attendue séquentiellement, à la différence de Promise.all qui lance tout en parallèle. Largement disponible dans les navigateurs depuis janvier 2024.

Analogie

Ramasser les lettres d'une boîte au fil de leur arrivée, dans l'ordre, jusqu'à la dernière.

Exemple de code

async function* pages() {
  for (let p = 1; p <= 3; p++) yield await fetchPage(p);
}
const tout = await Array.fromAsync(pages()); // [page1, page2, page3]

// Avec fonction de transformation (attendue elle aussi)
const tailles = await Array.fromAsync([1, 2, 3], async n => n * 2);
// Séquentiel : 5 promesses de 100 ms ≈ 500 ms (Promise.all ≈ 100 ms)

Cas d'usage

Collecter un flux paginé, un ReadableStream ou un curseur base de données en tableau.

Anti-pattern

L'utiliser pour paralléliser des appels indépendants : c'est séquentiel, Promise.all est fait pour ça.
#core#ES2026#async

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre