⊗jsSpPrmFC 171 of 294 menu

JavaScript-də Yerinə Yetirilmiş Promise-larin Yaradılması

Bəzən artıq yerinə yetirilmiş bir promise yaratmağa ehtiyacınız ola bilər. Bunun üçün iki üsul var: Promise.resolve üsulu uğurla yerinə yetirilmiş promise yaradır, Promise.reject üsulu isə rədd edilmiş promise yaradır. Bu üsullar parametr kimi müvafiq olaraq promise-in nəticəsi və ya xətası olacaq şeyi alır.

Artıq yerinə yetirilmiş promise nə vaxt lazım ola bilər? Gəlin bir nümunəyə baxaq. Tutaq ki, bizim parametr kimi bir rəqəm qəbul edən, onunla asinxron bir şeylər edən və nəticə ilə bir promise qaytaran bir funksiyamız var:

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

Biz funksiyamızdan aşağıdakı kimi istifadə edəcəyik:

func(5).then(function(res) { console.log(res); // 25 çap edəcək });

Tutaq ki, biz indi qərar verdik ki, asinxron əməliyyatımızı yalnız ötürülən rəqəm sıfırdan böyük olduqda yerinə yetirəcəyik. Əks halda funksiyanın nəticəsi sıfır olmalıdır:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // sıfır nəticə } }

Lakin, indi elə olur ki, funksiya ya promise, ya da rəqəm qaytarır. Buna görə də artıq funksiyanın nəticəsinə then metodunu tətbiq edə bilmərik, çünki funksiya rəqəm qaytardıqda xəta alarıq:

func(0).then(function(res) { // xəta, sıfıra then metodunu tətbiq edirik });

Bu problemi Promise.resolve bizə həll etməyə kömək edəcək:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // rəqəm deyil, promise qaytarırıq } }

Tutaq ki, biz indi qərar verdik ki, ötürülən sıfır üçün sıfır qaytarmalıyıq, sıfırdan kiçik rəqəmlər üçün isə istisna atmalıyıq. Bunda bizə Promise.reject üsulu kömək edəcək:

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'); // rədd edilmiş promise qaytarırıq } }
Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et