⊗jsSpPrmFC 171 of 294 menu

Ustvarjanje izpolnjenih promisov v JavaScript

Včasih boste morda morali ustvariti že izpolnjen promise. Za to obstajata dve metodi: metoda Promise.resolve ustvari uspešno izpolnjen promise, Promise.reject ustvari zavrnjen promise. Kot parameter ti metodi prejmeta to, kar bo postalo rezultat ali napaka promisa.

Kdaj lahko potrebujemo že izpolnjen promise? Poglejmo si primer. Recimo, da imamo neko funkcijo, ki kot parameter sprejme število, z njim asinhrono nekaj naredi in vrne promise z rezultatom:

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

Uporabljali bomo našo funkcijo na naslednji način:

func(5).then(function(res) { console.log(res); // izpiše 25 });

Recimo, da smo se zdaj odločili, da bomo našo asinhrono operacijo izvedli le, če je posredovano število večje od nič. V nasprotnem primeru bi moral biti rezultat funkcije nič:

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

Vendar pa zdaj funkcija vrne ali promise, ali število. Zaradi tega ne moremo več uporabiti metode then na rezultatu funkcije, ker bomo v primeru, da funkcija vrne število, dobili napako:

func(0).then(function(res) { // napaka, uporabljamo metodo then na ničli });

Rešiti težavo nam bo pomagal Promise.resolve:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // vrnemo promise, ne število } }

Recimo, da smo se zdaj odločili, da za posredovano ničlo moramo vrniti nič, za števila manjša od nič pa izjemo. Pri tem nam bo pomagala 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('incorrect number'); // vrnemo zavrnjen promise } }
Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni