Sobes.tech
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();