ЈаваСцрипт Промисе и Промисе Цхаининг

У овом упутству ћете научити о ЈаваСцрипт обећањима и ланцима обећања уз помоћ примера.

У ЈаваСцрипт-у обећање је добар начин за руковање асинхроним операцијама. Користи се за откривање да ли је асинхрона операција успешно завршена или није.

Обећање може имати једно од три стања.

  • нерешен
  • Испуњено
  • Одбијен

Обећање почиње у стању на чекању. То значи да процес није потпун. Ако је операција успешна, процес се завршава у испуњеном стању. А ако се догоди грешка, процес се завршава у одбијеном стању.

На пример, када захтевате податке од сервера помоћу обећања, они ће бити у стању на чекању. Када подаци успешно стигну, биће у испуњеном стању. Ако се догоди грешка, она ће бити у одбијеном стању.

Створите обећање

Да бисмо креирали обећавајући објекат, користимо Promise()конструктор.

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

Promise()Конструктор узима функцију као аргумент. Функција такође прихвата две функције resolve()и reject().

Ако се обећање врати успешно, resolve()позива се функција. И, ако дође до грешке, reject()функција се позива.

Претпоставимо да је програм у наставку асинхрони програм. Тада се програмом може управљати помоћу обећања.

Пример 1: Програм са обећањем

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

Оутпут

 Обећање (: „Постоји вредност бројања.“)

У горњем програму Promiseсе креира објекат који има две функције: resolve()и reject(). resolve()се користи ако је процес успешан и reject()користи се када се у обећању догоди грешка.

Обећање се разрешава ако је вредност броја тачна.

Функционисање ЈаваСцрипт обећања

ЈаваСцрипт Промисе Цхаининг

Обећања су корисна када морате да решавате више од једног асинхроног задатка, једно за другим. За то користимо ланац обећања.

Можете извршити операцију након обећање је решен коришћењем методе then(), catch()и finally().

ЈаваСцрипт тхен () метода

then()Метода се користи уз повратни позив када је обећање је успешно испуњен или решен.

Синтакса then()методе је:

 promiseObject.then(onFulfilled, onRejected);

Пример 2: Ланцирање обећања помоћу тхен ()

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

Оутпут

 Обећање решено На овај начин можете позвати више функција.

У горњем програму, then()метода се користи за повезивање функција у обећање. then()Метод се позива када обећање је успешно решен.

Помоћу then()обећања можете повезати више метода.

ЈаваСцрипт цатцх () метода

catch()Метода се користи уз повратни позив када је обећање буде одбијен или ако се појави грешка. На пример,

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

Оутпут

 Обећање одбијено

У горњем програму обећање је одбијено. А catch()метода се користи уз обећање да ће решити грешку.

Рад ланца обећања ЈаваСцрипт-а

ЈаваСцрипт Промисе Версус Цаллбацк

Обећања су слична функцијама повратног позива у смислу да се обе могу користити за обраду асинхроних задатака.

ЈаваСцрипт функције повратног позива могу се користити и за извршавање синхроних задатака.

Њихове разлике могу се сажети у следеће тачке:

ЈаваСцрипт Промисе

  1. Синтакса је једноставна за употребу и лака за читање.
  2. Руковање грешкама је лакше за управљање.
  3. Пример:
     апи (). тхен (фунцтион (ресулт) (ретурн апи2 ();)). тхен (фунцтион (ресулт2) (ретурн апи3 ();)). тхен (фунцтион (ресулт3) (// до ворк)). цатцх ( фунцтион (еррор) (// обрађујемо сваку грешку која се може догодити пре ове тачке));

ЈаваСцрипт повратни позив

  1. Синтакса је тешко разумљива.
  2. Управљање грешкама је можда тешко управљати.
  3. Пример:
     апи (функција (резултат) (апи2 (функција (резултат2) (апи3 (функција (резултат3) (// радим ако (грешка) (// радим нешто) друго (// радим нешто)));));) ;

ЈаваСцрипт коначно () метода

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.

Занимљиви Чланци...