Sobes.tech
Junior — Middle

Ի՞նչ տարբերություն կա Promise.all և Promise.any ֆունկցիաների միջև խոստումների մշակման ժամանակ։

sobes.tech AI

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

Promise.all ընդունում է խոստումների զանգված և վերադարձնում է նոր խոստում, որը՝

  • լուծվում է, երբ բոլոր զանգվածի խոստումները հաջողությամբ ավարտվեն, վերադարձնելով արդյունքների զանգվածը նույն կարգով;
  • մերժվում է, եթե առնվազն մեկ խոստում մերժվի, անմիջապես այդ խոստման սխալով:

Promise.any ընդունում է խոստումների զանգված և վերադարձնում է խոստում, որը՝

  • լուծվում է, երբ յուրաքանչյուրից մեկը հաջողությամբ ավարտվի, վերադարձնելով այդ խոստման արդյունքը;
  • մերժվում է, եթե բոլոր խոստումները մերժվեն, վերադարձնելով AggregateError-ով, որը պարունակում է բոլոր խոստումների սխալները:

Օրինակ:

const p1 = Promise.reject('Սխալ 1');
const p2 = Promise.resolve('Հաջողություն 2');
const p3 = Promise.resolve('Հաջողություն 3');

Promise.all([p1, p2, p3])
  .then(console.log) // չի կանչվի
  .catch(console.error); // ցույց կտա 'Սխալ 1'

Promise.any([p1, p2, p3])
  .then(console.log) // ցույց կտա 'Հաջողություն 2'
  .catch(console.error);