Τι είναι τελικά οι Υποσχέσεις;
Ο ασύγχρονος κώδικας μπορεί να αντιμετωπιστεί με υποσχέσεις. Παίρνουν μια συνάρτηση γνωστή ως εκτελεστής ως παράμετρο. Όταν δημιουργείται μια υπόσχεση, ο εκτελεστής εκτελείται αυτόματα ασύγχρονα και επιστρέφει μια τιμή σε περίπτωση που εκπληρωθεί διαφορετικά επιστρέφει τον λόγο απόρριψης:
ας 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().