⊗jsSpPrmAr 170 of 294 menu

Darbība ar promisu masīviem JavaScript

Tagad mēs izanalizēsim divas noderīgas metodes, kas ļauj strādāt ar promisu masīviem. Metode Promise.all ļauj izpildīt kodu pēc visu tam masīvā padoto promisu pabeigšanas, bet metode Promise.race gaida pirmā promisa no masīva izpildi, atmestot pārējos.

Abas metodes ar savu rezultātu atgriež jaunu promisu. Metodes Promise.all gadījumā šī promisa rezultāts būs visu padoto promisu rezultātu masīvs (rezultātu secība atbilst promisu secībai masīvā), savukārt Promise.race gadījumā - pirmā izpildītā promisa rezultāts.

Paskatīsimies praksē. Pieņemsim, ka mums ir promisu masīvs:

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

Izmantosim Promise.all, lai pagaidītu visu promisu no mūsu masīva ielādi:

Promise.all(promises).then(function(res) { console.log(res); // izvadīs [1, 2, 3] - visu promisu rezultātus });

Tagad ar Promise.race palīdzību pagaidīsim pirmā promisa ielādi:

Promise.race(promises).then(function(res) { console.log(res); // izvadīs 1 - pirmā izpildījušā promisa rezultātu });

Ja vismaz viens no promisiem masīvā tiks noraidīts, tad promiss ar rezultātu nekavējoties pāries stāvoklī rejected. Tāpēc radušos izņēmumu var noķert ar jau jums apgūto, parasto veidu, piemēram, ar catch palīdzību:

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

Izveidojiet funkciju, kas atgriež promisu, kura iekšienē iestatīta nejauša aizkave no 1 līdz 10 sekundēm. Lai promiss ar savu rezultātu atgriež šo aizkavi. Ar cikla un jūsu funkcijas palīdzību aizpildiet masīvu ar 10 promisiem.

Izmantojot promisu masīvu no iepriekšējā uzdevuma panāciet, lai konsolē izvadītos pirmā izpildītā promisa rezultāts.

Izmantojot promisu masīvu no iepriekšējā uzdevuma panāciet, lai konsolē izvadītos visu promisu rezultātu summa.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt