⊗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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა