⊗jsSpPrmFC 171 of 294 menu

Izdarīto promisu izveide JavaScript

Dažreiz jums var būt nepieciešams izveidot jau izpildītu promisu. Šim nolūkam pastāv divas metodes: metode Promise.resolve izveido veiksmīgi izpildītu promisu, Promise.reject izveido noraidītu promisu. Šīs metodes kā parametru saņem to, kas attiecīgi kļūs par promisa rezultātu vai kļūdu.

Kad mums var būt nepieciešams jau izpildīts promiss? Apskatīsim piemēru. Pieņemsim, ka mums ir kāda funkcija, kas kā parametru saņem skaitli, kaut ko ar to dara asinhroni un atgriež promisu ar rezultātu:

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

Mēs izmantosim savu funkciju šādi:

func(5).then(function(res) { console.log(res); // izvadīs 25 });

Pieņemsim, ka tagad esam nolēmuši, ka mūsu asinhrono darbību veiksim tikai tad, ja ir nodots skaitlis, kas lielāks par nulli. Pretējā gadījumā funkcijas rezultātam jābūt nullei:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // nulles rezultāts } }

Tomēr tagad iznāk, ka funkcija atgriež vai nu promisu, vai skaitli. Tāpēc mēs vairs nevaram piemērot metodi then funkcijas rezultātam, jo gadījumā, ja funkcija atgriež skaitli, mēs saņemsim kļūdu:

func(0).then(function(res) { // kļūda, piemērojam metodi then nullei });

Atrisināt problēmu mums palīdzēs Promise.resolve:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // atgriežam promisu, nevis skaitli } }

Pieņemsim, ka tagad esam nolēmuši, ka nodotajai nullei mums jāatgriež nulle, bet skaitļiem mazākiem par nulli - izņēmums. Šajā gadījumā mums palīdzēs metode 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'); // atgriezīsim noraidītu promisu } }
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt