Czym jest Promise.all w Javascript?
Promise.all to metoda, która za argument przyjmuje tablicę Promisów, a jednocześnie sama zwraca Promise, który zostanie:
- resolved - jeśli każdy Promise z tablicy również zostanie rozwiązany. W tym wypadku Promise.all zwróci tablicę wartości rozwiązanych obietnic. Kolejność tych wartości jest taka sama, jak kolejność Promisów w tablicy,
- rejected - jeśli chociaż jeden Promise zostanie odrzucony.
Przykłady użycia Promise.all w Javascript
Promise.all wykorzystujemy na przykład w sytuacji, gdy:
- chcesz wiedzieć, czy każdy Promise zostanie rozwiązany,
- chcesz poczekać, aż każdy Promise zostanie rozwiązany
Jak to wygląda w kodzie?
Promise.all( [Promise1, Promise2, Promise3] )
.then( result ) => {
console.log( result )
})
.catch( error => console.log(error) )
W powyższym przykładzie otrzymamy resolved, każdy z 3 Promisów zostanie rozwiązany, oraz rejected, gdy chociaż jeden z nich zostanie odrzucony.
Kiedy Promise.all może nam się przydać?
Promise.all sprawdzi się świetnie, jeśli potrzebujemy wykonać wiele asynchronicznych funkcji na raz, takich jak na przykład wysyłka maili.
Jeśli będziemy chcieli na raz wysłać 10 000 maili, to prawdopodobnie nasz serwer się podda.
Lepszym rozwiązaniem byłoby podzielić te maile, na mniejsze tablice, po 200 żądań, przekazywać je do Promise.all i wysyłać, po rozwiązaniu poprzedniego.
Przeczytaj również - Czym są Promises w Javascript?