Sobes.tech
Junior

Promise.all эмне үчүн керек?

sobes.tech AI

AIден жооп

Promise.all, misal üçü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 bir cavabın uğurlu olub-olmadığını yoxlamaq
    for (const response of responses) {
      if (!response.ok) {
        // Əgər cavab uğursuzsa, 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('Xəta:', error);
  }
}

fetchData();