În acest tutorial, veți afla despre promisiunile JavaScript și promisiunile înlănțuite cu ajutorul exemplelor.
În JavaScript, o promisiune este o modalitate bună de a gestiona operațiunile asincrone . Este folosit pentru a afla dacă operațiunea asincronă este finalizată cu succes sau nu.
O promisiune poate avea una din cele trei stări.
- In asteptarea
- Împlinit
- Respins
O promisiune începe într-o stare în așteptare. Asta înseamnă că procesul nu este complet. Dacă operațiunea are succes, procesul se încheie într-o stare îndeplinită. Și, dacă apare o eroare, procesul se termină într-o stare respinsă.
De exemplu, atunci când solicitați date de la server folosind o promisiune, acestea vor fi într-o stare în așteptare. Când datele sosesc cu succes, vor fi într-o stare îndeplinită. Dacă apare o eroare, atunci aceasta va fi într-o stare respinsă.
Creați o promisiune
Pentru a crea un obiect promis, folosim Promise()
constructorul.
let promise = new Promise(function(resolve, reject)( //do something ));
Promise()
Constructorul are o funcție ca argument. Funcția acceptă, de asemenea, două funcții resolve()
și reject()
.
Dacă promisiunea revine cu succes, resolve()
funcția este apelată. Și, dacă apare o eroare, reject()
funcția se numește.
Să presupunem că programul de mai jos este un program asincron. Apoi, programul poate fi gestionat folosind o promisiune.
Exemplul 1: Program cu o promisiune
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);
Ieșire
Promisiune (: „Există o valoare de numărare.”)
În programul de mai sus, Promise
este creat un obiect care are două funcții: resolve()
și reject()
. resolve()
este utilizat dacă procesul are succes și reject()
este utilizat atunci când apare o eroare în promisiune.
Promisiunea este rezolvată dacă valoarea numărării este adevărată.

JavaScript Promise Chaining
Promisiunile sunt utile atunci când trebuie să vă ocupați de mai multe sarcini asincrone, una după alta. Pentru aceasta, folosim înlănțuirea promisiunii.
Puteți efectua o operație după o promisiune este rezolvată folosind metode then()
, catch()
și finally()
.
JavaScript apoi () metoda
then()
Metoda este folosită cu apel invers atunci când promisiunea este îndeplinită cu succes sau rezolvate.
Sintaxa then()
metodei este:
promiseObject.then(onFulfilled, onRejected);
Exemplul 2: Înlănțuirea Promisiunii cu then ()
// 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.'); ), );
Ieșire
Promisiunea rezolvată Puteți apela mai multe funcții în acest fel.
În programul de mai sus, then()
metoda este utilizată pentru a lega funcțiile de promisiune. then()
Metoda se numește atunci când promisiunea este rezolvată cu succes.
Puteți lega mai multe then()
metode cu promisiunea.
Metoda JavaScript catch ()
catch()
Metoda este folosită cu apel invers atunci când promisiunea este respinsă sau în cazul în care apare o eroare. De exemplu,
// 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); ) );
Ieșire
Promisiunea respinsă
În programul de mai sus, promisiunea este respinsă. Și catch()
metoda este utilizată cu promisiunea de a rezolva eroarea.

JavaScript Promis Versus Callback
Promisiunile sunt similare cu funcțiile de apel invers într-un sens în care ambele pot fi utilizate pentru a gestiona sarcini asincrone.
Funcțiile de apel invers JavaScript pot fi, de asemenea, utilizate pentru a efectua sarcini sincrone.
Diferențele lor pot fi rezumate în următoarele puncte:
JavaScript Promise
- Sintaxa este ușor de utilizat și ușor de citit.
- Tratarea erorilor este mai ușor de gestionat.
- Exemplu:
api (). then (function (result) (return api2 ();)). then (function (result2) (return api3 ();)). then (function (result3) (// do work)). catch ( funcție (eroare) (// gestionează orice eroare care poate apărea înainte de acest punct));
JavaScript Callback
- Sintaxa este greu de înțeles.
- Tratarea erorilor poate fi dificil de gestionat.
- Exemplu:
api (funcție (rezultat) (api2 (funcție (rezultat2) (api3 (funcție (rezultat3) (// funcționează dacă (eroare) (// faceți ceva) altceva (// faceți ceva)));));)) ;
JavaScript în cele din urmă () metoda
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.