Junior
Do czego służy Promise.all?
sobes.tech AI
Odpowiedź od AI
Promise.all akceptuje obiekt iterowalny promes (np. tablicę) i zwraca nową promesę. Ta nowa promesa zostanie rozwiązana, gdy wszystkie przekazane promesy zostaną pomyślnie rozwiązane. Wynikiem będzie tablica wartości, odpowiadających wynikom każdej z przekazanych promes, w tej samej kolejności.
Jeśli przynajmniej jedna z przekazanych promes zostanie odrzucona, to Promise.all zostanie natychmiast odrzucona z powodu odrzucenia pierwszej odrzuconej promesy.
Zastosowania:
- Równoczesne wykonywanie wielu operacji asynchronicznych, które nie zależą od siebie.
- Oczekiwanie na zakończenie zestawu operacji przed przejściem do następnego kroku.
Przykład:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Ładowanie danych z wielu URL jednocześnie
const responses = await Promise.all(urls.map(url => fetch(url)));
// Sprawdzanie powodzenia każdej odpowiedzi
for (const response of responses) {
if (!response.ok) {
// Jeśli jedna z odpowiedzi nie powiedzie się, rzucamy błąd
throw new Error(`Błąd HTTP! status: ${response.status}`);
}
}
// Parsowanie wszystkich odpowiedzi do JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Teraz jsonData to tablica wyników wszystkich zapytań
console.log(jsonData);
} catch (error) {
// Obsługa błędu, jeśli jedna z promes zostanie odrzucona (Fetch lub JSON.parse)
console.error('Błąd podczas pobierania danych:', error);
}
}
fetchData();