Junior
Na co je Promise.all?
sobes.tech AI
Odpověď od AI
Promise.all přijímá iterovatelný objekt slibů (například pole) a vrací nový slib. Tento nový slib je splněn, když všechny předané sliby úspěšně splní. Výsledkem bude pole hodnot odpovídajících výsledkům každého z předaných slibů, ve stejném pořadí.
Pokud alespoň jeden z předaných slibů bude zamítnut, pak Promise.all okamžitě zamítne s důvodem zamítnutí prvního zamítnutého slibu.
Použití:
- Současné provádění několika asynchronních operací, které na sobě nezávisí.
- Čekání na dokončení sady operací před přechodem na další krok.
Příklad:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Načítání dat z více URL současně
const responses = await Promise.all(urls.map(url => fetch(url)));
// Kontrola úspěšnosti každé odpovědi
for (const response of responses) {
if (!response.ok) {
// Pokud jedna odpověď není úspěšná, vyhoďte chybu
throw new Error(`HTTP chyba! stav: ${response.status}`);
}
}
// Parsování všech odpovědí do JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// nyní je jsonData pole výsledků všech požadavků
console.log(jsonData);
} catch (error) {
// Zpracování chyby, pokud bylo některé slib zamítnuto (Fetch nebo JSON.parse)
console.error('Chyba při načítání dat:', error);
}
}
fetchData();