⊗jsSpPrmFC 171 of 294 menu

JavaScriptда ишлашган промислар яратиш

Баъзан сизга аллакачон бажарилган промис яратиш керак бўлиши мумкин. Бунинг учун икки усул мавжуд: Promise.resolve усули mуваффақиятли бажарилган промис яратади, Promise.reject эса рад этилган промис яратади. Ушбу усуллар параметри сифатида промиснинг натижаси ёки хатоси бўладиган нарсани олади.

Аллакачон бажарилган промис қачон керак бўлиши мумкин? Келиб, мисолда кўрамиз. Фарз қилайлик, бизда бирор функция бор, у параметр сифатида рақамни қабул қилади, унга бирор асинхрон амал бажаради ва натижа билан промис қайтаради:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

Биз функциямиздан шу тарзда фойдаланамиз:

func(5).then(function(res) { console.log(res); // 25 ни чиқаради });

Энди фарз қилайлик, биз қабул қилинган рақам нолдан катта бўлгандагина асинхрон амални бажаришни ўйлаб топдик. Акс ҳолда функция нол натижасини қайтариши керак:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // нол натижа } }

Бирок, энди функция ё промис ёки рақам қайтаради. Шу сабабдан, биз энди функция натижасига then усулини қўллай олмаймиз, чунки функция рақам қайтарган ҳолда биз хатоликка йўл қўямиз:

func(0).then(function(res) { // хатолик, then усулини нолга қўллаш });

Бу муаммони Promise.resolve ёрдамида ҳал қилишимиз мумкин:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // рақам эмас, балки промис қайтарамиз } }

Энди фарз қилайлик, биз қабул қилинган нол учун нол қайтаришимиз керак, нолдан кичик рақамлар учун эса истисно. Буда Promise.reject усули бизга ёрдам беради:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // рад этилган промисни қайтарамиз } }
Ўзбек
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
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш