Μέθοδος JavaScript Promise.race().

Methodos Javascript Promise Race



Η μέθοδος Promise.race() είναι μια ενσωματωμένη μέθοδος JavaScript που λαμβάνει ως όρισμα μια επαναλαμβανόμενη υπόσχεση και επιστρέφει την πρώτη υπόσχεση που επιλύεται ή απορρίπτεται. Η μέθοδος Promise.race() θα επιστρέψει είτε την τιμή εκπλήρωσης είτε τον λόγο απόρριψης. Οι επαναληπτικοί είναι αντικείμενα τα οποία μπορούν να επαναληφθούν μέσω βρόχου, όπως Πίνακες, Συμβολοσειρές και Χάρτες.

Τι είναι τελικά οι Υποσχέσεις;

Ο ασύγχρονος κώδικας μπορεί να αντιμετωπιστεί με υποσχέσεις. Παίρνουν μια συνάρτηση γνωστή ως εκτελεστής ως παράμετρο. Όταν δημιουργείται μια υπόσχεση, ο εκτελεστής εκτελείται αυτόματα ασύγχρονα και επιστρέφει μια τιμή σε περίπτωση που εκπληρωθεί διαφορετικά επιστρέφει τον λόγο απόρριψης:

ας example_promise = newPromise ( ( επιλύω, απορρίπτω ) => {
αποφασίζω ( «Η υπόσχεση λύθηκε» ) ;
} ) ;

παράδειγμα_υπόσχεση. έπειτα ( r => κονσόλα. κούτσουρο ( r ) ) ;







Ασύγχρονη φύση των υποσχέσεων:



ας example_promise = newPromise ( ( επιλύω, απορρίπτω ) => {
αποφασίζω ( «Η υπόσχεση λύθηκε» ) ;
} ) ;

παράδειγμα_υπόσχεση. έπειτα ( r => κονσόλα. κούτσουρο ( r ) ) ;
κονσόλα. κούτσουρο ( '1,2,3...' ) ;



Πώς να χρησιμοποιήσετε τη μέθοδο Promise.race();

Περάστε ένα iterable από υποσχέσεις στη μέθοδο Promise.race() και λάβετε την επιστρεφόμενη τιμή του στη μεταβλητή:





ας prom1 = newPromise ( ( επιλύω, απορρίπτω ) => {
setTimeout ( ( ) => αποφασίζω ( «Η υπόσχεση λύθηκε» ) , 500 ) ;
} ) ;

ας prom2 = newPromise ( ( επιλύω, απορρίπτω ) => {
setTimeout ( ( ) => απορρίπτω ( «Η υπόσχεση δεν μπορούσε να επιλυθεί» ) , 250 ) ;
} ) ;

αφήστε τη θερμοκρασία = Υπόσχεση. αγώνας ( [ prom1, prom2 ] ) ;

θερμοκρασία. σύλληψη ( λόγος => κονσόλα. κούτσουρο ( λόγος ) ) ;

Σε αυτό το παράδειγμα είχαμε δύο υποσχέσεις. Η πρώτη υπόσχεση επιλύθηκε μετά από 500 ms και η δεύτερη υπόσχεση απορρίφθηκε μόλις μετά από 250 δευτερόλεπτα. Καθώς η δεύτερη υπόσχεση ήταν η πρώτη που είτε επιλύθηκε είτε απορρίφθηκε, επιστράφηκε με τη μέθοδο Promise.race().



Εάν το όρισμα που μεταβιβάστηκε στη μέθοδο Promise.race() είναι ένα κενό iterable, τότε η μέθοδος θα επιστρέψει μια υπόσχεση για πάντα σε εκκρεμότητα:

αφήστε τη θερμοκρασία = Υπόσχεση. αγώνας ( [ ] ) ;

κονσόλα. κούτσουρο ( θερμοκρασία ) ;

Εάν το όρισμα iterable έχει οποιεσδήποτε μη υποσχόμενες τιμές ή υποσχέσεις που έχουν ήδη εκπληρωθεί ή απορριφθεί, τότε η μέθοδος θα εγκατασταθεί για την πρώτη τιμή στον πίνακα:

έστω p1 = newPromise ( ( επιλύω, απορρίπτω ) => {
αποφασίζω ( 'Το P1 έχει επιλυθεί' ) ;
} ) ;

έστω p2 = newPromise ( ( επιλύω, απορρίπτω ) => {
αποφασίζω ( 'Το P2 έχει επιλυθεί' ) ;
} ) ;

αφήστε τη θερμοκρασία = Υπόσχεση. αγώνας ( [ p1,p2 ] ) ;
θερμοκρασία. έπειτα ( αξία => κονσόλα. κούτσουρο ( αξία ) ) ;

Έλεγχος μεθόδου Promise.race() τόσο για επιλυμένες όσο και για απορριφθείσες υποσχέσεις. Αυτή η μέθοδος έχει επίσης μια άλλη εναλλακτική, η οποία είναι η μέθοδος Promise.any() που μπορεί να χρησιμοποιηθεί για να ελέγξετε απλώς για τις εκπληρωμένες υποσχέσεις.

συμπέρασμα

Η μέθοδος Promise.race() χρησιμοποιείται για να λάβουμε την πρώτη υπόσχεση που είτε εκπληρώνεται είτε απορρίπτεται από επαναλαμβανόμενες υποσχέσεις. Η υπόσχεση που εκπληρώνεται ή απορρίπτεται νωρίτερα είναι η τιμή επιστροφής του Promise.race(). Η εγγραφή παρείχε εις βάθος εικόνα της μεθόδου Promise.race().