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