Junior
Kam ir paredzēts Promise.all?
sobes.tech AI
Atbilde no AI
Promise.all pieņem iterējamu objektu ar solījumiem (piemēram, masīvu) un atgriež jaunu solījumu. Šis jauns solījums izpildās, kad visi nodotie solījumi veiksmīgi izpildās. Izpildes rezultāts būs masīvs ar vērtībām, kas atbilst katra nodotā solījuma rezultātiem, saglabājot to pašu kārtību.
Ja vismaz viens no nodotajiem solījumiem tiek noraidīts, tad Promise.all uzreiz noraida ar noraidījuma iemeslu pirmajam noraidītajam solījumam.
Pielietojums:
- Vienlaicīga vairāku asenhronisku operāciju izpilde, kas nav savstarpēji atkarīgas.
- Gaidīt, līdz tiek pabeigts noteikts operāciju kopums, pirms pāriet uz nākamo soli.
Piemērs:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Vienlaicīgi ielādē datus no vairākiem URL
const responses = await Promise.all(urls.map(url => fetch(url)));
// Pārbauda katra atbildes veiksmīgumu
for (const response of responses) {
if (!response.ok) {
// Ja viena no atbildēm nav veiksmīga, izmet kļūdu
throw new Error(`HTTP error! status: ${response.status}`);
}
}
// Pārvērš visas atbildes JSON formātā
const jsonData = await Promise.all(responses.map(response => response.json()));
// Tagad jsonData ir masīvs ar visiem pieprasījumu rezultātiem
console.log(jsonData);
} catch (error) {
// Apstrādā kļūdu, ja viens no solījumiem noraidās (Fetch vai JSON.parse)
console.error('Error fetching data:', error);
}
}
fetchData();