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