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știPromise { <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.