Selles õpetuses saate näidete abil teada JavaScripti lubadustest ja lubaduste aheldamisest.
JavaScripti puhul on lubadus hea viis asünkroonsete toimingute käsitlemiseks. Seda kasutatakse selleks, et teada saada, kas asünkroonne toiming on edukalt lõpule viidud või mitte.
Lubadusel võib olla üks kolmest osariigist.
- Ootel
- Täidetud
- Tagasi lükatud
Lubadus algab ootel olekus. See tähendab, et protsess pole lõpule viidud. Kui toiming õnnestub, lõpeb protsess täidetud olekus. Ja kui ilmneb tõrge, lõpeb protsess tagasilükatud olekus.
Näiteks kui palute lubaduse abil serverilt andmeid, on need ootel olekus. Kui andmed saabuvad edukalt, on need täidetud olekus. Vea ilmnemisel on see tagasilükatud olekus.
Looge lubadus
Lubaduse objekti loomiseks kasutame Promise()
konstruktorit.
let promise = new Promise(function(resolve, reject)( //do something ));
Promise()
Ehitaja võtab funktsiooni argumendina. Funktsioon aktsepteerib ka kahte funktsiooni resolve()
ja reject()
.
Kui lubadus naaseb edukalt, resolve()
kutsutakse funktsioon välja. Ja kui ilmneb tõrge, reject()
nimetatakse funktsiooni.
Oletame, et allpool olev programm on asünkroonne programm. Siis saab programm lubaduse abil hakkama saada.
Näide 1: Programm lubadusega
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);
Väljund
Lubadus (: "Loendusväärtus on olemas.")
Ülaltoodud programmis luuakse Promise
objekt, millel on kaks funktsiooni: resolve()
ja reject()
. resolve()
kasutatakse juhul, kui protsess on edukas, ja reject()
seda kasutatakse lubaduses tõrke ilmnemisel.
Lubadus lahendatakse, kui loenduse väärtus vastab tõele.

JavaScripti lubadus ketid
Lubadustest on kasu siis, kui peate järjest rohkem kui ühe asünkroonse ülesandega hakkama saama. Selleks kasutame lubaduste aheldamist.
Saate teha operatsiooni pärast lubadus on lahendatud kasutades meetodeid then()
, catch()
ja finally()
.
JavaScripti siis () meetod
then()
Meetodit kasutada tagasihelistamise kui lubadus on edukalt täidetud või lahendatud.
Meetodi süntaks then()
on:
promiseObject.then(onFulfilled, onRejected);
Näide 2: Lubaduse aheldamine siis ()
// 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.'); ), );
Väljund
Lubadus on lahendatud Sel viisil saate helistada mitmele funktsioonile.
Ülaltoodud programmis kasutatakse then()
meetodit funktsioonide lubamiseks aheldamiseks. then()
Meetodit nimetatakse kui lubadus on lahendatud edukalt.
then()
Lubadusega saate aheldada mitut meetodit.
JavaScripti püüdmise () meetod
Seda catch()
meetodit kasutatakse koos tagasihelistamisega, kui lubadus lükatakse tagasi või kui ilmneb tõrge. Näiteks,
// 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); ) );
Väljund
Lubadus lükati tagasi
Ülaltoodud programmis lükatakse lubadus tagasi. Ja catch()
meetodit kasutatakse lubadusega viga lahendada.

JavaScripti lubadus versus tagasihelistamine
Lubadused sarnanevad teatud mõttes tagasihelistamisfunktsioonidega, et neid mõlemaid saab kasutada asünkroonsete ülesannete lahendamiseks.
JavaScripti tagasihelistamise funktsioone saab kasutada ka sünkroonsete ülesannete täitmiseks.
Nende erinevused võib kokku võtta järgmistes punktides:
JavaScripti lubadus
- Süntaks on kasutajasõbralik ja kergesti loetav.
- Veakäsitlust on lihtsam hallata.
- Näide:
api (). siis (funktsioon (tulemus) (tagastab api2 ();))). siis (funktsioon (tulemus2) (tagastab api3 ();))). siis (funktsioon (tulemus3) (// tee tööd)). püüdma ( function (error) (// käsitseda kõiki vead, mis võivad tekkida enne seda punkti));
JavaScripti tagasihelistamine
- Süntaksit on raske mõista.
- Veakäsitlust võib olla raske hallata.
- Näide:
api (funktsioon (tulemus) (api2 (funktsioon (tulemus2)) (api3 (funktsioon (tulemus3) (// tee tööd, kui (viga) (// tee midagi) muud (// tee midagi));;);)) ;
JavaScripti lõpuks () meetod
You can also use the finally()
method with promises. The finally()
method gets executed when the promise is either resolved successfully or rejected. For example,
// 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.'); ) );
Output
This code is executed.
JavaScript Promise Methods
There are various methods available to the Promise object.
Method | Description |
---|---|
all(iterable) | Waits for all promises to be resolved or any one to be rejected |
allSettled(iterable) | Waits until all promises are either resolved or rejected |
any(iterable) | Returns the promise value as soon as any one of the promises is fulfilled |
race(iterable) | Wait until any of the promises is resolved or rejected |
reject(reason) | Returns a new Promise object that is rejected for the given reason |
resolve(value) | Returns a new Promise object that is resolved with the given value |
catch() | Appends the rejection handler callback |
then() | Appends the resolved handler callback |
finally() | Appends a handler to the promise |
To learn more about promises in detail, visit JavaScript Promises.