⊗jsSpPrmAr 170 of 294 menu

Darbas su pažadų masyvais JavaScript

Dabar mes išnagrinėsime du naudingus metodus, leidžiančius dirbti su pažadų masyvais. Metodas Promise.all leidžia vykdyti kodą visiems pažadams, perduotiems jam masyvo pavidalu, pasibaigus, o metodas Promise.race laukia pirmojo iš masyvo pažado įvykdymo, atmetant likusius.

Abu metodai savo rezultatu grąžina naują pažadą. Metodo Promise.all rezultatas šio pažado bus visų perduotų pažadų rezultatų masyvas (rezultatų eiliškumas atitinka pažadų eiliškumą masyve), o Promise.race - pirmojo įvykdyto pažado rezultatas.

Pažiūrėkime praktiškai. Tarkime, mes turime pažadų masyvą:

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

Naudodami Promise.all palaukime, kol bus įvykdyti visi mūsų masyvo pažadai:

Promise.all(promises).then(function(res) { console.log(res); // išves [1, 2, 3] - visų pažadų rezultatus });

O dabar naudodami Promise.race palaukime pirmojo pažado įvykdymo:

Promise.race(promises).then(function(res) { console.log(res); // išves 1 - pirmojo įvykdyto pažado rezultatą });

Jei bent vienas iš masyvo pažadų bus atmetimas, tai pažadas su rezultatu iškart pereis į būseną rejected. Todėl kilusį išimtį galima pagauti įprastu, jūsų jau išmoktu būdu, pavyzdžiui, per catch:

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

Sukurkite funkciją, grąžinančią pažadą, kurio viduje yra nustatyts atsitiktinis delsos laikas nuo 1 iki 10 sekundžių. Tegul savo rezultatu pažadas grąžina šį delsos laiką. Naudodamiesi ciklu ir jūsų funkcija užpildykite masyvą 10 pažadais.

Naudodamiesi pažadų masyvu iš ankstesnės užduoties padarykite taip, kad į konsolę būtų išvestas pirmojo įvykdyti pažado rezultatas.

Naudodamiesi pažadų masyvu iš ankstesnės užduoties padarykite taip, kad į konsolę būtų išvesta visų pažadų rezultatų suma.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti