„JavaScript“ pažadas ir pažadas grandinėms

Š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 Promiseobjektas, 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.

Veikia „JavaScript“ pažadas

„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ą.

„JavaScript“ pažadų grandinės darbas

„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

  1. Sintaksė yra patogi vartotojui ir lengvai skaitoma.
  2. Klaidų tvarkymą lengviau valdyti.
  3. 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

  1. Sintaksę sunku suprasti.
  2. Gali būti sunku valdyti klaidas.
  3. 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.

Įdomios straipsniai...