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