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