Promise.all()
Promise.all([promise1, promise2, …])
Czeka jednocześnie na wszystkie Promise. Gdy wszystkie zostaną spełnione, zostaje spełniony z tablicą wyników w tej samej kolejności. Przy pierwszym błędzie zostaje od razu odrzucony.
Parametry
- iterable – Promise albo wartości (wartości uznaje się za spełnione).
Wartość zwracana
Promise z tablicą wyników.
Przykłady
const wait = (ms, value) => new Promise((done) => setTimeout(() => done(value), ms));
const fail = (ms, message) => new Promise((_, reject) => setTimeout(() => reject(new Error(message)), ms));
const start = Date.now();
const [user, orders] = await Promise.all([wait(100, 'Jana'), wait(100, [1024, 1025])]);
console.log(user, orders, Date.now() - start < 190 ? 'jednocześnie' : 'po kolei');
try {
await Promise.all([wait(50, 'ok'), fail(10, 'Zamówienia niedostępne')]);
} catch (e) {
console.log('Błąd:', e.message);
}
Wynik:
Jana [ 1024, 1025 ] jednocześnie Błąd: Zamówienia niedostępne
Na co uważać
- Jeden błąd odrzuca cały wynik, a wyniki pozostałych przepadają – jeśli potrzebujesz wszystkich wyników łącznie z błędami, użyj Promise.allSettled().
- Operacje startują przy tworzeniu Promise, nie w Promise.all().
Promise.all(array.map(load))uruchamia wszystkie żądania naraz – przy setkach pozycji podziel je na partie.
Obsługa w przeglądarkach
Baseline – szeroko dostępne: działa we wszystkich popularnych przeglądarkach, i to od dawna (najpóźniej od 2015 roku). Od wersji: Chrome 32, Firefox 29, Safari 8; Node.js 0.12.0. Stan: październik 2026 (MDN browser-compat-data).
Zobacz też:
Promise.allSettled()
Promise.any()
Promise.race()
await