Sobes.tech
Junior

Εξηγήστε τι είναι το Promise.race και πώς χρησιμοποιείται στη JavaScript.

sobes.tech AI

Απάντηση από AI

Promise.race δέχεται ένα επαναλαμβανόμενο αντικείμενο υποσχέσεων και επιστρέφει μια νέα υπόσχεση. Αυτή η νέα υπόσχεση επιλύεται ή απορρίπτεται μόλις η πρώτη υπόσχεση στο επαναλαμβανόμενο αντικείμενο επιλυθεί ή απορριφθεί. Το αποτέλεσμα της νέας υπόσχεσης θα είναι το αποτέλεσμα ή ο λόγος απόρριψης της πρώτης ολοκληρωμένης υπόσχεσης.

Χρησιμοποιείται για:

  • Επιλογή της ταχύτερης απάντησης από πολλές ασύγχρονες λειτουργίες.
  • Υλοποίηση χρονικών ορίων για ασύγχρονες λειτουργίες.

Παράδειγμα χρονικού ορίου:

// Συνάρτηση που δημιουργεί μια υπόσχεση που απορρίπτεται μετά από ένα συγκεκριμένο χρόνο
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Ασύγχρονη λειτουργία που μπορεί να είναι αργή
function fetchData() {
  return new Promise(resolve => {
    // Προσομοίωση μακράς λειτουργίας
    setTimeout(() => {
      resolve('Δεδομένα λήφθηκαν με επιτυχία');
    }, 2000); // Υποθέτουμε ότι αυτή η λειτουργία διαρκεί 2 δευτερόλεπτα
  });
}

// Χρήση του Promise.race για να προσθέσουμε χρονικό όριο στο fetchData
Promise.race([
  fetchData(),  // Η λειτουργία μας
  timeout(1000) // Χρονικό όριο 1 δευτερολέπτου
])
.then(result => {
  console.log(result); // Θα εκτελεστεί αν το fetchData ολοκληρωθεί πριν το χρονικό όριο
})
.catch(error => {
  console.error(error.message); // Θα εκτελεστεί αν το χρονικό όριο συμβεί πρώτο
});