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)));

    // санҷиши муваффақияти ҳар як ҷавоб
    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();