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