JavaScript-løfte og løftekæde

I denne vejledning lærer du om JavaScript-løfter og løbekædning ved hjælp af eksempler.

I JavaScript er et løfte en god måde at håndtere asynkrone operationer på. Det bruges til at finde ud af, om den asynkrone operation er fuldført eller ej.

Et løfte kan have en af ​​tre stater.

  • Verserende
  • Opfyldt
  • Afvist

Et løfte starter i en ventende tilstand. Det betyder, at processen ikke er afsluttet. Hvis operationen er vellykket, ender processen i en opfyldt tilstand. Og hvis der opstår en fejl, ender processen i en afvist tilstand.

For eksempel, når du beder om data fra serveren ved hjælp af et løfte, vil de være i afventende tilstand. Når dataene ankommer med succes, vil de være i en opfyldt tilstand. Hvis der opstår en fejl, vil den være i en afvist tilstand.

Opret et løfte

For at oprette et løfteobjekt bruger vi Promise()konstruktøren.

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

Den Promise()constructor tager en funktion som et argument. Funktionen accepterer også to funktioner resolve()og reject().

Hvis løftet vender tilbage, resolve()kaldes funktionen. Og hvis der opstår en fejl, reject()kaldes funktionen.

Lad os antage, at programmet nedenfor er et asynkront program. Derefter kan programmet håndteres ved hjælp af 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);

Produktion

 Løfte (: "Der er en tællerværdi.")

I ovenstående program Promiseoprettes et objekt, der tager to funktioner: resolve()og reject(). resolve()bruges, hvis processen er vellykket og reject()bruges, når der opstår en fejl i løftet.

Løftet løses, hvis værdien af ​​optællingen er sand.

Brug af JavaScript-løfte

JavaScript lovende lænkning

Løfter er nyttige, når du skal håndtere mere end en asynkron opgave, den ene efter den anden. Til det bruger vi løftet sammenkædning.

Du kan udføre en operation, når et løfte er løst ved hjælp af metoder then(), catch()og finally().

JavaScript derefter () metode

Den then()metode anvendes med tilbagekald, når løftet er lykkedes opfyldt eller løst.

Syntaksen for then()metoden er:

 promiseObject.then(onFulfilled, onRejected);

Eksempel 2: Lænke løftet med derefter ()

 // 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.'); ), );

Produktion

 Løftet er løst Du kan ringe til flere funktioner på denne måde.

I ovenstående program then()bruges metoden til at kæde funktionerne til løftet. Den then()metode kaldes, når løftet er løst med succes.

Du kan kæde flere then()metoder med løftet.

JavaScript-fangst () -metode

Den catch()metode anvendes med tilbagekald, når løftet afvises, eller hvis der opstår en fejl. 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); ) );

Produktion

 Løftet afvist

I ovenstående program afvises løftet. Og catch()metoden bruges med et løfte om at håndtere fejlen.

Arbejde med JavaScript-løbende sammenkædning

JavaScript Promise Versus Callback

Løfter ligner tilbagekaldsfunktioner i en forstand, at de begge kan bruges til at håndtere asynkrone opgaver.

JavaScript callback-funktioner kan også bruges til at udføre synkrone opgaver.

Deres forskelle kan opsummeres i følgende punkter:

JavaScript-løfte

  1. Syntaksen er brugervenlig og let at læse.
  2. Fejlhåndtering er lettere at administrere.
  3. Eksempel:
     api (). derefter (funktion (resultat) (returner api2 ();)). derefter (funktion (resultat2) (retur api3 ();)). derefter (funktion (resultat3) (// gør arbejde)). fangst ( funktion (fejl) (// håndter enhver fejl, der kan opstå før dette punkt));

JavaScript-tilbagekaldelse

  1. Syntaksen er vanskelig at forstå.
  2. Fejlhåndtering kan være svært at administrere.
  3. Eksempel:
     api (funktion (resultat) (api2 (funktion (resultat2) (api3 (funktion (resultat3) (// gør arbejde hvis (fejl) (// gør noget) andet (// gør noget))));)) ;

JavaScript endelig () metode

Du kan også bruge finally()metoden med løfter. Den finally()metode bliver udført, når løftet er enten løst med succes eller afvist. 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.'); ) );

Produktion

 Denne kode udføres.

JavaScript-lovningsmetoder

Der er forskellige metoder til rådighed for objektet Promise.

Metode Beskrivelse
all(iterable) Venter på, at alle løfter løses, eller at ethvert afvises
allSettled(iterable) Vent indtil alle løfter enten er løst eller afvist
any(iterable) Returnerer løfteværdien, så snart et af løfterne er opfyldt
race(iterable) Vent, indtil nogen af ​​løfterne er løst eller afvist
reject(reason) Returnerer et nyt Promise-objekt, der afvises af den givne grund
resolve(value) Returnerer et nyt Promise-objekt, der løses med den givne værdi
catch() Føjer tilbagekaldelsen til afvisningshåndterer
then() Tilføjer det tilbagekaldte handler tilbagekald
finally() Tilføjer en handler til løftet

For at lære mere om løfter i detaljer, besøg JavaScript-løfter.

Interessante artikler...