⊗jsSpPrmAr 170 of 294 menu

Εργασία με πίνακες promises στο JavaScript

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

Και οι δύο μέθοδοι επιστρέφουν ως αποτέλεσμά τους ένα νέο promise. Για τη μέθοδο Promise.all το αποτέλεσμα αυτού του promise θα είναι ένας πίνακας με τα αποτελέσματα όλων των promises που μεταβιβάστηκαν (η σειρά των αποτελεσμάτων αντιστοιχεί στη σειρά των promises στον πίνακα), ενώ για το Promise.race - το αποτέλεσμα του πρώτου promise που εκτελέστηκε.

Ας δούμε στην πράξη. Ας υποθέσουμε ότι έχουμε έναν πίνακα promises:

let promises = [ new Promise(resolve => setTimeout(() => resolve(1), 1000)), new Promise(resolve => setTimeout(() => resolve(2), 2000)), new Promise(resolve => setTimeout(() => resolve(3), 3000)), ];

Ας χρησιμοποιήσουμε το Promise.all για να περιμένουμε το τέλος της φόρτωσης όλων των promises από τον πίνακά μας:

Promise.all(promises).then(function(res) { console.log(res); // θα εμφανίσει [1, 2, 3] - τα αποτελέσματα όλων των promises });

Και τώρα ας χρησιμοποιήσουμε το Promise.race για να περιμένουμε το τέλος της φόρτωσης του πρώτου από τα promises:

Promise.race(promises).then(function(res) { console.log(res); // θα εμφανίσει 1 - το αποτέλεσμα του πρώτου promise που εκτελέστηκε });

Εάν τουλάχιστον ένα από τα promises στον πίνακα απορριφθεί, τότε το promise με το αποτέλεσμα αμέσως θα μεταβεί στην κατάσταση rejected. Επομένως η εξαίρεση που προκύπτει μπορεί να πιαστεί με τον συνηθισμένο, ήδη μελετημένο από εσάς τρόπο, για παράδειγμα, μέσω catch:

Promise.all(promises).then(function(res) { console.log(res); }).catch(function(err) { console.log(err); });

Φτιάξτε μια συνάρτηση, που επιστρέφει ένα promise, μέσα στο οποία ορίζεται μια τυχαία καθυστέρηση από 1 έως 10 δευτερόλεπτα. Ας επιστρέφει ως αποτέλεσμά της το promise αυτή την καθυστέρηση. Με τη βοήθεια βρόχου και της συνάρτησής σας συμπληρώστε τον πίνακα 10 promises.

Χρησιμοποιώντας τον πίνακα promises από την προηγούμενη άσκηση φροντίστε ώστε στην κονσόλα να εμφανιστεί το αποτέλεσμα του πρώτου promise που εκτελέστηκε.

Χρησιμοποιώντας τον πίνακα promises από την προηγούμενη άσκηση φροντίστε ώστε στην κονσόλα να εμφανιστεί το άθροισμα αποτελεσμάτων όλων των promises.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη