Junior
Promise.all nima uchun kerak?
sobes.tech AI
AIdan javob
Promise.all, bir iterable ob'ekt sifatida, masalan, massiv, qabul qiladi va yangi promise qaytaradi. Bu yangi promise amalga oshadi, agar barcha o'tkazilgan promisslar muvaffaqiyatli bajarilsa. Natija, har bir o'tkazilgan promissning natijalariga mos keladigan, bir xil tartibda bo'lgan qiymatlar massividir.
Agar kamida biri o'tkazilgan promiss rad etilsa, Promise.all darhol rad etiladi va rad etilgan birinchi promissning sababi bilan rad etiladi.
Qo'llanilishi:
- Bir-biriga bog'liq bo'lmagan bir nechta asinxron operatsiyalarni bir vaqtning o'zida bajarish.
- Bir to'plam operatsiyalarining yakunlanishini kutish va keyingi bosqichga o'tish.
Misol:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Bir vaqtning o'zida bir nechta URL'dan ma'lumotlarni yuklash
const responses = await Promise.all(urls.map(url => fetch(url)));
// Har bir javobning muvaffaqiyatli yoki muvaffaqiyatsizligini tekshirish
for (const response of responses) {
if (!response.ok) {
// Agar javob muvaffaqiyatsiz bo'lsa, xato tashlash
throw new Error(`HTTP xatosi! holat: ${response.status}`);
}
}
// Barcha javoblarni JSON ga aylantirish
const jsonData = await Promise.all(responses.map(response => response.json()));
// jsonData endi barcha so'rovlarning natijalarini o'z ichiga olgan massiv
console.log(jsonData);
} catch (error) {
// Xatoni boshqarish, agar promisslardan biri rad etilsa (Fetch yoki JSON.parse)
console.error('Ma'lumotlarni olishda xato:', error);
}
}
fetchData();