JavaScript sola un apsola ķēdi

Šajā apmācībā jūs uzzināsit par JavaScript solījumiem un solījumu ķēdēšanu ar piemēru palīdzību.

Programmā JavaScript solījums ir labs veids, kā rīkoties ar asinhronām darbībām. To izmanto, lai uzzinātu, vai asinhronā darbība ir veiksmīgi pabeigta.

Solījumam var būt viens no trim stāvokļiem.

  • Gaida
  • Izpildīts
  • Noraidīts

Solījums sākas gaidīšanas stāvoklī. Tas nozīmē, ka process nav pabeigts. Ja darbība ir veiksmīga, process beidzas izpildītā stāvoklī. Un, ja rodas kļūda, process beidzas noraidītā stāvoklī.

Piemēram, kad jūs pieprasāt datus no servera, izmantojot solījumu, tie būs gaidīšanas stāvoklī. Kad dati būs veiksmīgi saņemti, tie būs izpildītā stāvoklī. Ja rodas kļūda, tā būs noraidītā stāvoklī.

Izveidojiet solījumu

Lai izveidotu solījumu objektu, mēs izmantojam Promise()konstruktoru.

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

Promise()Būvētājs notiek funkciju kā argumentu. Funkcija pieņem arī divas funkcijas resolve()un reject().

Ja solījums atgriežas veiksmīgi, resolve()tiek izsaukta funkcija. Un, ja rodas kļūda, reject()tiek izsaukta funkcija.

Pieņemsim, ka zemāk redzamā programma ir asinhrona programma. Tad programmu var apstrādāt, izmantojot solījumu.

1. piemērs: Programma ar solījumu

 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);

Rezultāts

 Solījums (: "Ir skaitīšanas vērtība.")

Iepriekš minētajā programmā Promisetiek izveidots objekts, kuram ir divas funkcijas: resolve()un reject(). resolve()tiek izmantots, ja process ir veiksmīgs, un reject()tiek izmantots, ja solījumā rodas kļūda.

Solījums tiek atrisināts, ja skaitīšanas vērtība ir patiesa.

Darbs ar JavaScript solījumu

JavaScript solījumu ķēde

Solījumi ir noderīgi, ja nākas rīkoties vairāk nekā ar vienu asinhronu uzdevumu vienu pēc otra. Tam mēs izmantojam solījumu ķēdi.

Jūs varat veikt darbību pēc tam, kad solījums ir atrisināts, izmantojot metodes then(), catch()un finally().

JavaScript tad () metode

then()Metode tiek izmantota ar atzvanu kad solījums ir veiksmīgi izpildīts vai atrisināt.

Metodes sintakse then()ir:

 promiseObject.then(onFulfilled, onRejected);

2. piemērs: Apsolīt ķēdi ar (()

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

Rezultāts

 Solījums atrisināts Šādā veidā varat izsaukt vairākas funkcijas.

Iepriekš minētajā programmā then()metodi izmanto, lai funkcijas saistītu ar solījumu. then()Metode tiek saukta kad solījums ir veiksmīgi atrisināta.

Jūs varat sasaistīt vairākas then()metodes ar solījumu.

JavaScript catch () metode

catch()Metode tiek izmantota ar atzvanu kad solījums tiek noraidīts vai ja rodas kļūda. Piemēram,

 // 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); ) );

Rezultāts

 Solījums noraidīts

Iepriekš minētajā programmā solījums tiek noraidīts. Un catch()metodi izmanto ar solījumu rīkoties ar kļūdu.

JavaScript solījumu ķēdēšanas darbība

JavaScript solījums salīdzinājumā ar atzvanīšanu

Solījumi savā ziņā ir līdzīgi atzvanīšanas funkcijām, jo ​​tos abus var izmantot asinhronu uzdevumu apstrādei.

Sinhrono uzdevumu veikšanai var izmantot arī JavaScript atzvanīšanas funkcijas.

To atšķirības var apkopot šādos punktos:

JavaScript solījums

  1. Sintakse ir lietotājam draudzīga un viegli lasāma.
  2. Kļūdu apstrādi ir vieglāk pārvaldīt.
  3. Piemērs:
     api (). tad (funkcija (rezultāts) (atgriež api2 ();))). pēc tam (funkcija (rezultāts2) (atgriež api3 ();))). pēc tam (funkcija (rezultāts3) (// veic darbu)). catch ( funkcija (kļūda) (// rīkoties ar jebkuru kļūdu, kas var rasties pirms šī punkta));

JavaScript atzvanīšana

  1. Sintakse ir grūti saprotama.
  2. Kļūdu apstrādi, iespējams, ir grūti pārvaldīt.
  3. Piemērs:
     api (funkcija (rezultāts) (api2 (funkcija (rezultāts2)) (api3 (funkcija (rezultāts3) (// darīt darbu, ja (kļūda) (// darīt kaut ko) citu (// kaut ko darīt));));)) ;

JavaScript beidzot () metode

Jūs varat arī izmantot finally()metodi ar solījumiem. finally()Metode tiek izpildīts, kad solījums vai nu atrisināta veiksmīgi vai noraidīts. Piemēram,

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

Rezultāts

 Šis kods tiek izpildīts.

JavaScript solījumu metodes

Objektam Promise ir pieejamas dažādas metodes.

Metode Apraksts
all(iterable) Gaida visu solījumu atrisināšanu vai jebkuru noraidīšanu
allSettled(iterable) Gaida, līdz visi solījumi tiek atrisināti vai noraidīti
any(iterable) Atgriež solītā vērtību, tiklīdz kāds no solījumiem ir izpildīts
race(iterable) Pagaidiet, līdz kāds no solījumiem tiek atrisināts vai noraidīts
reject(reason) Atgriež jaunu solījumu objektu, kas noraidīts norādītā iemesla dēļ
resolve(value) Atgriež jaunu solījumu objektu, kas ir atrisināts ar norādīto vērtību
catch() Pievieno noraidījuma apstrādātāja atzvanīšanu
then() Pievieno atrisināto apstrādātāja atzvanīšanu
finally() Solītājam pievieno apdarinātāju

Lai sīkāk uzzinātu vairāk par solījumiem, apmeklējiet JavaScript solījumus.

Interesanti raksti...