Sobes.tech
Junior

Ի՞նչ է նշանակում Promise.all-ը։

sobes.tech AI

Պատասխան AI-ից

Promise.all ընդունում է iterable օբյեկտ վկայագրերի (օրինակ, զանգված) և վերադարձնում է նոր վկայագիր: Այս նոր վկայագիրը կատարվում է, երբ բոլոր փոխանցված վկայագրերը հաջողությամբ կատարվեն: Նպատակը կլինի արժեքների զանգված, որոնք համապատասխան են յուրաքանչյուր փոխանցված վկայագրի արդյունքներին, նույն կարգով:

Եթե գոնե մեկը փոխանցված վկայագրերից անհաջող է, ապա Promise.all անմիջապես մերժվում է առաջին մերժված վկայագրի պատճառով:

Հայտեր:

  • Միաժամանակյա կատարման մի քանի ասինխրոնային գործողություններ, որոնք չեն կախված մեկը մյուսից:
  • Ապահովել, որ մի շարք գործողությունների ավարտից հետո անցնել հաջորդ քայլին:

Օրինակ:

async function fetchData() {
  const urls = [
    'https://api.example.com/data1',
    'https://api.example.com/data2',
    'https://api.example.com/data3',
  ];

  try {
    // Միաժամանակ բեռնում տվյալներ մի քանի URL-ներից
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Ստուգում յուրաքանչյուր պատասխան success-ությունը
    for (const response of responses) {
      if (!response.ok) {
        // Եթե պատասխաններից մեկը չի հաջողվում, գցում ենք սխալ
        throw new Error(`HTTP սխալ! կարգավիճակ: ${response.status}`);
      }
    }

    // Բոլոր պատասխանները վերլուծում ենք JSON-ով
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // Այժմ jsonData-ն է բոլոր հարցումների արդյունքների զանգվածը
    console.log(jsonData);

  } catch (error) {
    // Սխալի կառավարում, եթե մի վկայագիր մերժվի (Fetch կամ JSON.parse)
    console.error('Սխալ տվյալների բեռնումիս:', error);
  }
}

fetchData();