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 Promise
oprettes 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.

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.

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
- Syntaksen er brugervenlig og let at læse.
- Fejlhåndtering er lettere at administrere.
- 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
- Syntaksen er vanskelig at forstå.
- Fejlhåndtering kan være svært at administrere.
- 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.