Junior
Milleks on Promise.all?
sobes.tech AI
Vastus AI-lt
Promise.all võtab vastu iteratiivse objekti lubadustest (näiteks massiiv) ja tagastab uue lubaduse. See uus lubadus täidetakse, kui kõik edastatud lubadused õnnestuvad. Täitmise tulemusena saadakse massiiv väärtustest, mis vastavad iga edastatud lubaduse tulemustele, säilitades sama järjekorra.
Kui vähemalt üks edastatud lubadus lükatakse tagasi, siis Promise.all lükatakse tagasi kohe põhjusega, mis tuleneb esimese tagasi lükatud lubaduse põhjusest.
Rakendused:
- Mitme asünkroonse operatsiooni samaaegne täitmine, mis ei sõltu üksteisest.
- Oodata, kuni teatud operatsioonide kogum on lõpetatud, enne järgmise sammu alustamist.
Näide:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Laadime andmeid samaaegselt mitmest URL-ist
const responses = await Promise.all(urls.map(url => fetch(url)));
// Kontrollime iga vastuse edukust
for (const response of responses) {
if (!response.ok) {
// Kui üks vastustest ei ole edukas, viskame vea
throw new Error(`HTTP error! status: ${response.status}`);
}
}
// Parsime kõik vastused JSON-iks
const jsonData = await Promise.all(responses.map(response => response.json()));
// Nüüd on jsonData massiiv kõigi päringute tulemustest
console.log(jsonData);
} catch (error) {
// Käsitleme viga, kui üks lubadustest lükatakse tagasi (Fetch või JSON.parse)
console.error('Error fetching data:', error);
}
}
fetchData();