⊗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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել