⊗jsSpPrmFC 171 of 294 menu

Opprettelse av oppfylte promises i JavaScript

Noen ganger kan det hende du trenger å opprette et allerede oppfylt promise. For dette finnes det to metoder: metoden Promise.resolve oppretter et vellykket oppfylt promise, Promise.reject oppretter et avvist promise. Disse metodene mottar som parameter det som blir resultatet eller feilen til promise henholdsvis.

Når kan vi trenge et allerede oppfylt promise? La oss se på et eksempel. La oss si at vi har en funksjon som tar imot et tall som parameter, gjør noe asynkront med det og returnerer et promise med resultatet:

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

Vi vil bruke funksjonen vår på følgende måte:

func(5).then(function(res) { console.log(res); // vil skrive ut 25 });

La oss nå si at vi bestemmer at vår asynkrone operasjon kun skal utføres hvis tallet som sendes er større enn null. I motsatt fall skal resultatet av funksjonen være null:

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

Men nå blir det slik at funksjonen returnerer enten et promise eller et tall. På grunn av dette kan vi ikke lenger bruke metoden then på resultatet av funksjonen, fordi i tilfellet hvor funksjonen returnerer et tall vil vi få en feil:

func(0).then(function(res) { // feil, vi bruker then-metoden på null });

Promise.resolve kan hjelpe oss med å løse problemet:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // returnerer et promise, ikke et tall } }

La oss nå si at vi bestemmer at for overført null skal vi returnere null, og for tall mindre enn null - en unntakstilstand. Promise.reject kan hjelpe oss med dette:

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'); // returnerer et avvist promise } }
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis