Array.fromAsync în JavaScript

Tablouri (array) ES2026 (Node.js 22+, browserele moderne)

Creează un tablou din valori asincrone: un iterator asincron sau o listă de promisiuni.

Sintaxă
await Array.fromAsync(sursa, functieMap)

Ce face Array.fromAsync

Array.fromAsync este varianta asincronă a lui Array.from. Parcurge sursa cu for await, așteaptă fiecare valoare și returnează o promisiune care primește tabloul complet.

Sursa poate fi un generator asincron (de exemplu pagini citite una câte una de la un server) sau un tablou de promisiuni. Spre deosebire de Promise.all, valorile sunt așteptate pe rând, nu în paralel.

Parametri

Parametru Descriere
sursa Un iterabil asincron, un iterabil obișnuit (poate conține promisiuni) sau un obiect cu length.
functieMap Opțional. Funcție aplicată fiecărei valori; rezultatul ei este și el așteptat.

Ce returnează

O Promise care primește un tablou nou.

Exemple

Exemplul 1: Dintr-un generator asincron

async function* pagini() {
  for (let pagina = 1; pagina <= 3; pagina++) {
    await new Promise((r) => setTimeout(r, 50));
    yield `articole din pagina ${pagina}`;
  }
}

console.log(await Array.fromAsync(pagini()));

Rezultat

[
  'articole din pagina 1',
  'articole din pagina 2',
  'articole din pagina 3'
]

Exemplul 2: Din promisiuni, cu transformare

const promisiuni = [Promise.resolve(2), Promise.resolve(5), 7];

console.log(await Array.fromAsync(promisiuni, (x) => x * 10));

Rezultat

[ 20, 50, 70 ]

Greșeli frecvente

  • Uiți await și primești Promise { <pending> } în loc de tablou.

Comenzi înrudite

  • Array.from: Creează un tablou nou din orice listă: text, Set, Map, NodeList sau un obiect cu length.
  • Promise.all: Așteaptă mai multe promisiuni în paralel și returnează toate rezultatele, în ordine; eșuează la prima eroare.
  • async / await: Scrie cod asincron care se citește ca un cod obișnuit, de sus în jos.