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