Junior
Τι είναι το Promise.race;
sobes.tech AI
Απάντηση από AI
Promise.race — είναι μια μέθοδος που επιστρέφει μια νέα υπόσχεση. Αυτή η νέα υπόσχεση επιλύεται ή απορρίπτεται με την ίδια τιμή (ή λόγο) με την πρώτη υπόσχεση από το διαδοχικό αντικείμενο που έχει δοθεί (συνήθως ένας πίνακας) που ολοκληρώθηκε.
Αρχές λειτουργίας:
- Είσοδος: Δέχεται ένα διαδοχικό αντικείμενο (π.χ. έναν πίνακα) από υποσχέσεις.
- Αναμονή: Ξεκινά έναν "αγώνα" μεταξύ όλων των υποσχέσεων.
- Αποτέλεσμα: Μόλις οποιαδήποτε από τις υποσχέσεις στο διαδοχικό αντικείμενο ολοκληρωθεί (είτε επιλυθεί είτε απορριφθεί), το
Promise.raceολοκληρώνεται αμέσως με το ίδιο αποτέλεσμα. - Αγνόηση: Τα αποτελέσματα όλων των άλλων υποσχέσεων που ολοκληρώνονται αργότερα, αγνοούνται πλήρως.
Παράδειγμα χρήσης:
// Παράδειγμα υπόσχεσης που επιλύεται μετά από 1 δευτερόλεπτο
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Πρώτο'), 1000));
// Παράδειγμα υπόσχεσης που επιλύεται μετά από 500 milliseconds
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Δεύτερο'), 500));
// Παράδειγμα υπόσχεσης που απορρίπτεται μετά από 300 milliseconds
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Σφάλμα')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Θα εμφανίσει 'Σφάλμα'
})
.catch((error) => {
console.error(error.message); // Διαχείριση σφάλματος 'Σφάλμα'
});
Σε αυτό το παράδειγμα, το promise3 ολοκληρώνεται πρώτο (απορρίπτεται), επομένως το Promise.race ολοκληρώνεται με σφάλμα και εκτελείται το μπλοκ .catch. Αν το promise2 ολοκληρωνόταν πρώτο (π.χ. σε 10 ms), τότε το Promise.race θα επιλύονταν με την τιμή 'Δεύτερο' και θα εκτελούνταν το μπλοκ .then.
Τυπικά σενάρια χρήσης:
- Υλοποίηση χρονικού ορίου για μια ασύγχρονη λειτουργία.
- Απόκτηση του αποτελέσματος από την πιο γρήγορη πηγή δεδομένων μεταξύ πολλών.
- Ακύρωση ανταγωνιστικών ασύγχρονων λειτουργιών.