⊗jsSpPrmFC 171 of 294 menu

Die Skepping van Vervulde Promises in JavaScript

Soms mag jy dalk nodig hê om 'n reeds voltooide promise te skep. Daar bestaan twee metodes hiervoor: die metode Promise.resolve skep 'n suksesvol vervulde promise, Promise.reject skep 'n verwerpde promise. As parameter ontvang hierdie metodes dit wat die resultaat of fout van die promise onderskeidelik sal word.

Wanneer kan ons 'n reeds vervulde promise nodig hê? Kom ons kyk na 'n voorbeeld. Gestel ons het 'n sekere funksie wat 'n getal as parameter aanvaar, dit asynchroon verwerk en 'n promise met die resultaat teruggee:

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

Ons sal ons funksie op die volgende wyse gebruik:

func(5).then(function(res) { console.log(res); // sal 25 uitdruk });

Gestel ons het nou besluit dat ons die asinchrone operasie slegs sal uitvoer as 'n getal groter as nul oorgedra word. Andersins moet die resultaat van die funksie nul wees:

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

Maar nou gebeur dit dat die funksie teruggee of 'n promise, of 'n getal. Hierdeur kan ons nie meer die metode then op die resultaat van die funksie toepas nie, want in die geval waar die funksie 'n getal teruggee, sal ons 'n fout kry:

func(0).then(function(res) { // fout, pas die then-metode op nul toe });

Promise.resolve sal ons help om die probleem op te los:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // gee 'n promise terug, nie 'n getal nie } }

Gestel ons het nou besluit dat vir 'n oorgedra nul ons nul moet teruggee, maar vir getalle kleiner as nul - 'n uitsondering. Hierin sal die metode Promise.reject ons help:

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'); // gee 'n verwerpde promise terug } }
Afrikaans
Azə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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp