⊗jsSpPrmFC 171 of 294 menu

JavaScript-те дайын промистерді жасау

Кейде сізге әлдеқашан орындалған промис құру қажет болуы мүмкін. Ол үшін екі әдіс бар: Promise.resolve әдісі сәтті орындалған промис жасайды, 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çeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау