Šioje pamokoje sužinosite apie „JavaScript“ pažadus ir pažadų susiejimą pavyzdžių pagalba.
„JavaScript“ kalboje pažadas yra geras būdas valdyti asinchronines operacijas. Jis naudojamas norint sužinoti, ar asinchroninė operacija sėkmingai baigta, ar ne.
Pažadas gali turėti vieną iš trijų valstybių.
- Kol
- Įvykdė
- Atstumtas
Pažadas prasideda laukiančioje būsenoje. Tai reiškia, kad procesas nėra baigtas. Jei operacija yra sėkminga, procesas baigiasi įvykdyta būsena. Jei įvyksta klaida, procesas baigiasi atmesta būsena.
Pavyzdžiui, kai prašote duomenų iš serverio naudodamiesi pažadu, jie bus laukiantys. Kai duomenys bus sėkmingai gauti, jie bus įvykdyti. Jei įvyksta klaida, ji bus atmestos būsenos.
Sukurkite pažadą
Norėdami sukurti pažado objektą, mes naudojame Promise()
konstruktorių.
let promise = new Promise(function(resolve, reject)( //do something ));
Promise()
Konstruktorius trunka funkciją kaip argumentą. Funkcija taip pat priima dvi funkcijas resolve()
ir reject()
.
Jei pažadas sėkmingai grįžta, resolve()
iškviečiama funkcija. Jei įvyksta klaida, reject()
iškviečiama funkcija.
Tarkime, kad žemiau pateikta programa yra asinchroninė programa. Tada programa gali būti vykdoma naudojant pažadą.
1 pavyzdys: programa su pažadu
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);
Rezultatas
Pažadas (: "Yra skaičiaus vertė.")
Pirmiau minėtoje programoje sukurtas Promise
objektas, kuris atlieka dvi funkcijas: resolve()
ir reject()
. resolve()
yra naudojamas, jei procesas yra sėkmingas, ir reject()
naudojamas, kai žada pažadą.
Pažadas bus išspręstas, jei skaičiaus vertė yra teisinga.
![](https://cdn.wiki-base.com/5343878/javascript_promise_and_promise_chaining.png.webp)
„JavaScript Promise Chain“
Pažadai yra naudingi, kai tenka tvarkyti daugiau nei vieną asinchroninę užduotį vieną po kitos. Tam mes naudojame pažadų grandinę.
Jūs galite atlikti operaciją, po pažadas bus išspręsta naudojant metodus then()
, catch()
ir finally()
.
„JavaScript“ tada () metodas
then()
Metodas yra naudojamas su perskambinti, kai pažadas sėkmingai įvykdytos ar išspręsta.
then()
Metodo sintaksė yra:
promiseObject.then(onFulfilled, onRejected);
2 pavyzdys: Pažadą sukrėsti tada ()
// 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.'); ), );
Rezultatas
Pažadas išspręstas Tokiu būdu galite iškviesti kelias funkcijas.
Ankstesnėje programoje then()
metodas naudojamas susieti funkcijas pagal pažadą. then()
Metodas vadinamas kai pažadas sėkmingai išspręsta.
Žadėdami galite susieti kelis then()
metodus.
„JavaScript“ sugavimo () metodas
catch()
Metodas yra naudojamas su perskambinti, kai pažadas yra atmetamas arba jei įvyksta klaida. Pavyzdžiui,
// 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); ) );
Rezultatas
Pažadas atmestas
Pagal minėtą programą pažadas atmetamas. Ir catch()
metodas naudojamas su pažadu pašalinti klaidą.
![](https://cdn.wiki-base.com/5343878/javascript_promise_and_promise_chaining_2.png.webp)
„JavaScript“ pažadas palyginus su atgaliniu skambučiu
Pažadai yra panašūs į atgalinio ryšio funkcijas tam tikra prasme, kad juos abu galima naudoti asinchroninėms užduotims tvarkyti.
„JavaScript“ skambinimo funkcijos taip pat gali būti naudojamos sinchroninėms užduotims atlikti.
Jų skirtumus galima apibendrinti šiuose punktuose:
„JavaScript“ pažadas
- Sintaksė yra patogi vartotojui ir lengvai skaitoma.
- Klaidų tvarkymą lengviau valdyti.
- Pavyzdys:
tada (funkcija (rezultatas) (grąžinti api2 ();)). tada (funkcija (rezultatas2) (grąžinti api3 ();))). tada (funkcija (rezultatas3) (// atlikti darbą)). sugauti ( funkcija (klaida) (// tvarkyti visas klaidas, kurios gali atsirasti prieš šį tašką));
„JavaScript“ skambutis
- Sintaksę sunku suprasti.
- Gali būti sunku valdyti klaidas.
- Pavyzdys:
api (funkcija (rezultatas) (api2 (funkcija (rezultatas2)) (api3 (funkcija (rezultatas3) (// atlikti darbą, jei (klaida) (// padaryti ką nors kita) (// padaryti ką nors));));)) ;
„JavaScript“ pagaliau () metodas
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.