Junior
Promise.all nə üçün lazımdır?
sobes.tech Süni İntellekt
AI-dan cavab
Promise.all, məsələn, massiv kimi, iterasiya edilə bilən obyekt qəbul edir və yeni bir vəd qaytarır. Bu yeni vəd yerinə yetirilir, hər zaman bütün ötürülmüş vədlər uğurla yerinə yetiriləndə. Nəticə, ötürülmüş hər bir vədin nəticələrinə uyğun olan və eyni sırayla olan dəyərlər massividir.
Əgər ən azı biri ötürülmüş vəd inkar edilərsə, Promise.all derhal inkar edilir və ilk inkar edilmiş vədin səbəbi ilə rədd edilir.
Tətbiqlər:
- Bir-birindən asılı olmayan bir neçə asinxron əməliyyatın eyni vaxtda icrası.
- Bir əməliyyatlar dəstəsinin tamamlanmasını gözləmək və növbəti mərhələyə keçmək.
Nümunə:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Eyni vaxtda bir neçə URL-dən məlumat yükləmək
const responses = await Promise.all(urls.map(url => fetch(url)));
// Hər cavabın uğurlu olub-olmadığını yoxlamaq
for (const response of responses) {
if (!response.ok) {
// Əgər cavab uğurlu deyilsə, xəta at
throw new Error(`HTTP xətası! status: ${response.status}`);
}
}
// Bütün cavabları JSON-ə çevirmək
const jsonData = await Promise.all(responses.map(response => response.json()));
// İndi jsonData bütün sorğuların nəticələrindən ibarət arraydir
console.log(jsonData);
} catch (error) {
// Xətanı idarə et, əgər vədlərdən biri rədd edilibsə (Fetch və ya JSON.parse)
console.error('Məlumatların alınmasında xəta:', error);
}
}
fetchData();