Junior
Na čo je Promise.all?
sobes.tech AI
Odpoveď od AI
Promise.all prijíma iterovateľný objekt sľubov (napríklad pole) a vracia nový sľub. Tento nový sľub je splnený, keď všetky odovzdané sľuby úspešne splnia. Výsledkom bude pole hodnôt, ktoré zodpovedajú výsledkom každého odovzdaného sľubu, v rovnakom poradí.
Ak minimálne jeden z odovzdaných sľubov bude zamietnutý, potom Promise.all hneď zamietne s dôvodom zamietnutia prvého zamietnutého sľubu.
Použitie:
- Súčasné vykonávanie viacerých asynchrónnych operácií, ktoré na sebe nezávisia.
- Čakanie na dokončenie sady operácií pred prechodom na ďalší krok.
Príklad:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Načítanie dát z viacerých URL naraz
const responses = await Promise.all(urls.map(url => fetch(url)));
// Kontrola úspešnosti každej odpovede
for (const response of responses) {
if (!response.ok) {
// Ak jedna odpoveď nie je úspešná, vyhodíme chybu
throw new Error(`HTTP chyba! stav: ${response.status}`);
}
}
// Parsovanie všetkých odpovedí do JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Teraz je jsonData pole výsledkov všetkých požiadaviek
console.log(jsonData);
} catch (error) {
// Riešenie chyby, ak bolo niektoré sľub zamietnuté (Fetch alebo JSON.parse)
console.error('Chyba pri načítaní dát:', error);
}
}
fetchData();