⊗jsSpPrmFC 171 of 294 menu

Krijimi i Premtimeve të Përmbushura në JavaScript

Ndonjëherë mund t'ju duhet të krijoni një premisë tashmë të përmbushur. Për këtë ekzistojnë dy metoda: metoda Promise.resolve krijon një premisë të përmbushur me sukses, Promise.reject krijon një premisë të refuzuar. Si parametër këto metoda marrin atë që do të bëhet rezultati ose gabimi i premisës përkatësisht.

Kur mund të na duhet një premisë e përmbushur tashmë? Le të shohim një shembull. Le të themi se kemi një funksion që si parametër pranon një numër, bën diçka me të në mënyrë asinkrone dhe kthen një premisë me rezultatin:

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

Ne do të përdorim funksionin tonë në mënyrën e mëposhtme:

func(5).then(function(res) { console.log(res); // do të shfaqë 25 });

Le të themi tani që kemi vendosur që operacionin tonë asinkron do ta kryejmë vetëm nëse është dhënë një numër më i madh se zero. Përndryshe rezultati i funksionit duhet të jetë zero:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // rezultat zero } }

Megjithatë, tani del se funksioni kthen ose një premisë, ose një numër. Për shkak të kësaj ne nuk mund të aplikojmë më metodën then në rezultatin e funksionit, sepse në rastin e kthimit të një numri nga funksioni do të marrim një gabim:

func(0).then(function(res) { // gabim, po aplikojmë metodën then në zero });

Të rregulluar problemin do të na ndihmojë Promise.resolve:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // kthejmë një premisë, jo një numër } }

Le të themi tani që kemi vendosur që për numrin e dhënë zero duhet të kthejmë zero, kurse për numrat më të vegjël se zero - një përjashtim. Në këtë do të na ndihmojë metoda 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('numër i pasaktë'); // kthejmë një premisë të refuzuar } }
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo