⊗jsSpPrmAr 170 of 294 menu

JavaScript да массивида промислар билан ишлаш

Ҳозир биз промислар массиви билан ишлаш имконини берувчи икки фойдали усулни кўриб чиқамиз. Promise.all усули унга массив кўринишида юзғазилган барча промислар тугаганидан кейин кодни бажариш имконини беради, Promise.race эса массивдан биринчи юклаб олинган промис кутиб, қолганларини четлагади.

Иккала усул ўз натижаси сифатида янги промис қайтаради. Promise.all усули учун шу промиснинг натижаси юзғазилган барча промисларнинг натижалари массиви бўлади (натижаларнинг тартиби массивдаги промислар тартибига мос келади), Promise.race учун эса - биринчи ишга тушган промиснинг натижаси.

Амалиётда кўрайлик. Бизда промислар массиви бор дейлик:

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 ёрдамида бизнинг массивимиздаги барча промисларнинг юкланиши тугашини кутайлик:

Promise.all(promises).then(function(res) { console.log(res); // [1, 2, 3] - барча промисларнинг натижаларини чиқаради });

Энди Promise.race ёрдамида промисларнинг биринчисининг юкланиши тугашини кутайлик:

Promise.race(promises).then(function(res) { console.log(res); // 1 - биринчи бажарилган промиснинг натижасини чиқаради });

Aгар массивдаги промисларнинг ҳеч бўлмағанда биттаси рад этилса, натижа промис darhol rejected ҳолатига ўтади. Шу сабабдан юзага келган истиснони сиз ўрганган оддий усул билан, масалан, catch орқали тутиб олишингиз мумкин:

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

Ички қисмида 1 дан 10 сониягача тасодифий кечиктириш белгиланган, промис қайтарувчи функсия ясаинг. Промис ўз натижаси сифатида шу кечиктиришни қайтарсин. Цикл ва сизнинг функсиянг ёрдамида массивни 10 та промис билан тўлдиринг.

Олдинги вазифадан олинган промислар массивидан фойдаланиб, биринчи ишга тушган промиснинг натижаси консольга чиқарилишини таъминланг.

Олдинги вазифадан олинган промислар массивидан фойдаланиб, барча промислар натижаларининг йиғиндиси консольга чиқарилишини таъминланг.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш