Junior
За шта је Promise.all?
sobes.tech АИ
Одговор од АИ
Promise.all prihvata iterabilni objekat od obećanja (na primjer, niz) i vraća novo obećanje. Ovo novo obećanje se ispunjava kada sva data obećanja uspešno budu ispunjena. Rezultat će biti niz vrednosti koje odgovaraju rezultatima svakog od datih obećanja, u istom redosledu.
Ako bar jedno od datih obećanja bude odbačeno, onda Promise.all odmah bude odbačeno sa razlogom odbačenog prvog odbačenog obećanja.
Primene:
- Istovremeno izvršavanje više asinhronih operacija koje se ne zavise jedna od druge.
- Čekanje na završetak skupa operacija pre prelaska na sledeći korak.
Primer:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Učitavanje podataka sa više URL-ova istovremeno
const responses = await Promise.all(urls.map(url => fetch(url)));
// Provera uspešnosti svakog odgovora
for (const response of responses) {
if (!response.ok) {
// Ako jedan od odgovora nije uspešan, bacamo grešku
throw new Error(`HTTP greška! status: ${response.status}`);
}
}
// Parsiranje svih odgovora u JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Sada je jsonData niz rezultata svih zahteva
console.log(jsonData);
} catch (error) {
// Rukovanje greškom ako je neko obećanje odbačeno (Fetch ili JSON.parse)
console.error('Greška pri preuzimanju podataka:', error);
}
}
fetchData();