JavaScript Promise and Promise Chetting

I denne opplæringen vil du lære om JavaScript-løfter og løftekjedinger ved hjelp av eksempler.

I JavaScript er et løfte en god måte å håndtere asynkrone operasjoner på. Den brukes til å finne ut om den asynkrone operasjonen er fullført eller ikke.

Et løfte kan ha en av tre stater.

  • Avventer
  • Oppfylt
  • Avvist

Et løfte starter i pågående tilstand. Det betyr at prosessen ikke er fullført. Hvis operasjonen er vellykket, ender prosessen i en oppfylt tilstand. Og hvis det oppstår en feil, ender prosessen i en avvist tilstand.

For eksempel når du ber om data fra serveren ved å bruke et løfte, vil de være i ventende tilstand. Når dataene kommer vellykket, vil de være i oppfylt tilstand. Hvis det oppstår en feil, vil den være i en avvist tilstand.

Lag et løfte

For å lage et løfteobjekt bruker vi Promise()konstruktøren.

 let promise = new Promise(function(resolve, reject)( //do something ));

Den Promise()konstruktøren tar en funksjon som et argument. Funksjonen godtar også to funksjoner resolve()og reject().

Hvis løftet vender tilbake, resolve()kalles funksjonen. Og hvis det oppstår en feil, reject()kalles funksjonen.

La oss anta at programmet nedenfor er et asynkront program. Deretter kan programmet håndteres ved å bruke et løfte.

Eksempel 1: Program med et løfte

 const count = true; let countValue = new Promise(function (resolve, reject) ( if (count) ( resolve("There is a count value."); ) else ( reject("There is no count value"); ) )); console.log(countValue);

Produksjon

 Løfte (: "Det er en telleverdi.")

I programmet ovenfor Promiseopprettes et objekt som tar to funksjoner: resolve()og reject(). resolve()brukes hvis prosessen er vellykket og reject()brukes når det oppstår en feil i løftet.

Løftet løses hvis verdien av tellingen er sann.

Arbeid med JavaScript-løfte

JavaScript lover kjetting

Løfter er nyttige når du må håndtere mer enn en asynkron oppgave, den ene etter den andre. Til det bruker vi løftekjetting.

Du kan utføre en operasjon etter at løftet er løst ved hjelp av metoder then(), catch()og finally().

JavaScript deretter () -metoden

Den then()metoden brukes med tilbakeringing når løftet er vellykket oppfylt eller løst.

Syntaksen for then()metoden er:

 promiseObject.then(onFulfilled, onRejected);

Eksempel 2: Chaining the Promise med da ()

 // returns a promise let countValue = new Promise(function (resolve, reject) ( resolve('Promise resolved'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) .then( function successValue1() ( console.log('You can call multiple functions this way.'); ), );

Produksjon

 Løftet løst Du kan ringe til flere funksjoner på denne måten.

I programmet ovenfor then()brukes metoden til å kjede funksjonene til løftet. Den then()metoden kalles når løftet er løst med hell.

Du kan kjede flere then()metoder med løftet.

JavaScript catch () -metode

Den catch()metoden brukes sammen med den tilbakeringing når løftet blir avvist eller hvis det oppstår en feil. For eksempel,

 // returns a promise let countValue = new Promise(function (resolve, reject) ( reject('Promise rejected'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) // executes if there is an error .catch( function errorValue(result) ( console.log(result); ) );

Produksjon

 Løftet avvist

I ovennevnte program avvises løftet. Og catch()metoden brukes med et løfte om å håndtere feilen.

Arbeid med JavaScript lover chaining

JavaScript Promise Versus Callback

Løfter ligner tilbakeringingsfunksjoner i en forstand at de begge kan brukes til å håndtere asynkrone oppgaver.

JavaScript tilbakekallingsfunksjoner kan også brukes til å utføre synkrone oppgaver.

Forskjellene deres kan oppsummeres i følgende punkter:

JavaScript-løfte

  1. Syntaksen er brukervennlig og lett å lese.
  2. Feilhåndtering er lettere å administrere.
  3. Eksempel:
     api (). deretter (funksjon (resultat) (retur api2 ();)). deretter (funksjon (resultat2) (retur api3 ();)). deretter (funksjon (resultat3) (// gjør arbeid)). fangst ( funksjon (feil) (// håndterer eventuelle feil som kan oppstå før dette punktet));

JavaScript-tilbakeringing

  1. Syntaksen er vanskelig å forstå.
  2. Feilhåndtering kan være vanskelig å administrere.
  3. Eksempel:
     api (funksjon (resultat) (api2 (funksjon (resultat2) (api3 (funksjon (resultat3) (// gjør arbeid hvis (feil) (// gjør noe) annet (// gjør noe));));)) ;

JavaScript til slutt () -metoden

Du kan også bruke finally()metoden med løfter. Den finally()metoden blir utført når løftet er enten løst vellykket eller avvist. For eksempel,

 // returns a promise let countValue = new Promise(function (resolve, reject) ( // could be resolved or rejected resolve('Promise resolved'); )); // add other blocks of code countValue.finally( function greet() ( console.log('This code is executed.'); ) );

Produksjon

 Denne koden utføres.

JavaScript Promise Methods

Det er forskjellige metoder tilgjengelig for Promise-objektet.

Metode Beskrivelse
all(iterable) Venter på at alle løfter skal løses eller at noen skal avvises
allSettled(iterable) Vent til alle løfter blir løst eller avvist
any(iterable) Returnerer løfteverdien så snart et av løftene er oppfylt
race(iterable) Vent til noen av løftene er løst eller avvist
reject(reason) Returnerer et nytt Promise-objekt som avvises av den gitte årsaken
resolve(value) Returnerer et nytt Promise-objekt som løses med den gitte verdien
catch() Legger til tilbakeringing av avvisningshåndtereren
then() Legger til den tilbakekalte tilbakeringingen av håndtereren
finally() Legger en håndterer til løftet

For å lære mer om løfter i detalj, besøk JavaScript Promises.

Interessante artikler...