JavaScript ígéret és ígéret láncolás

Ebben az oktatóanyagban megismerheti a JavaScript ígéreteit és az ígéretek láncolását példák segítségével.

A JavaScript-ben az ígéret jó módszer az aszinkron műveletek kezelésére . Arra szolgál, hogy kiderítse, az aszinkron művelet sikeresen befejeződött-e vagy sem.

Az ígéretnek három állapota lehet.

  • Függőben levő
  • Teljesült
  • Elutasítva

Az ígéret függőben lévő állapotban kezdődik. Ez azt jelenti, hogy a folyamat nem teljes. Ha a művelet sikeres, a folyamat teljesített állapotban végződik. Ha pedig hiba lép fel, a folyamat elutasított állapotban végződik.

Például, amikor egy ígéret használatával kér adatokat a szervertől, az függőben lévő állapotban lesz. Amikor az adatok sikeresen megérkeznek, teljesített állapotban lesznek. Ha hiba lép fel, akkor az elutasított állapotban lesz.

Hozzon létre egy ígéretet

Ígéret objektum létrehozásához a Promise()konstruktort használjuk .

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

A Promise()konstruktor egy függvényt vesz fel argumentumként. A funkció azt is elfogadja, a két funkciót resolve(), és reject().

Ha az ígéret sikeresen visszatér, akkor a resolve()függvény meghívásra kerül. Ha pedig hiba lép fel, akkor a reject()függvény meghívásra kerül.

Tegyük fel, hogy az alábbi program aszinkron program. Ezután a program egy ígéret felhasználásával kezelhető.

1. példa: Program ígérettel

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

Kimenet

 Ígéret (: "Van egy számérték.")

A fenti programban Promiselétrejön egy objektum, amely két funkciót tölt be: resolve()és reject(). resolve()akkor használható, ha a folyamat sikeres, és reject()akkor használják, ha hiba lép fel az ígéretben.

Az ígéret akkor oldódik fel, ha a számlálás értéke igaz.

A JavaScript ígéret működése

JavaScript ígéretláncolás

Az ígéretek akkor hasznosak, ha több aszinkron feladatot kell egymás után kezelnie. Ehhez ígéretláncolást használunk.

Műveletet hajthat végre, miután az ígéret megoldódott módszerekkel then(), catch()és finally().

JavaScript majd () metódus

A then()módszert a visszahívással együtt használják, amikor az ígéretet sikeresen teljesítették vagy megoldották.

A then()módszer szintaxisa :

 promiseObject.then(onFulfilled, onRejected);

2. példa: Az ígéret láncolása ekkor ()

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

Kimenet

 Ígéret megoldva Több funkciót is így hívhat meg.

A fenti programban a then()módszert arra használják, hogy a függvényeket az ígérethez kapcsolják. A then()módszert akkor hívják meg, amikor az ígéretet sikeresen megoldják.

Az then()ígérettel több módszert is láncolhat.

JavaScript catch () metódus

A catch()módszert a visszahívással együtt használják, amikor az ígéretet elutasítják, vagy ha hiba lép fel. Például,

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

Kimenet

 Az ígéret elutasítva

A fenti programban az ígéretet elutasítják. És a catch()módszert ígérettel használják a hiba kezelésére.

A JavaScript ígéretláncolása

JavaScript ígéret versus visszahívás

Az ígéretek bizonyos szempontból hasonlóak a visszahívási funkciókhoz, hogy mindkettő használható aszinkron feladatok kezelésére.

A JavaScript visszahívási funkciók szinkron feladatok végrehajtására is használhatók.

Különbségeik a következő pontokban foglalhatók össze:

JavaScript ígéret

  1. A szintaxis felhasználóbarát és könnyen olvasható.
  2. A hibakezelés könnyebben kezelhető.
  3. Példa:
     api (). majd (függvény (eredmény) (visszatér api2 ();))). majd (függvény (eredmény2) (visszatér api3 ();))). majd (függvény (eredmény3) (// munkát végez)). fogás ( function (error) (// kezelni minden olyan hibát, amely e pont előtt előfordulhat));

JavaScript visszahívás

  1. A szintaxist nehéz megérteni.
  2. Lehet, hogy a hibakezelést nehéz kezelni.
  3. Példa:
     api (függvény (eredmény) (api2 (függvény (eredmény2)) (api3 (függvény (eredmény3) (// munkát végez, ha (hiba) (// csinál valamit) más (// csinál valamit));));)) ;

JavaScript végre () metódus

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.

érdekes cikkek...