Sobes.tech
Middle

Ինչպես է աշխատում Promise-ը JavaScript-ում?

sobes.tech AI

Պատասխան AI-ից

  • Օբյեկտ, որը ներկայացնում է հնարավոր վերջնական ավարտը (կամ ձախողումը) ասինխրոնային օպերացիայի և դրա արդյունք արժեքը:
  • Պրոմիսի վիճակները:
    • pending: սկզբնական վիճակ, ոչ լրացված, ոչ մերժված:
    • fulfilled: նշանակում է, որ օպերացիան հաջողությամբ ավարտվել է:
    • rejected: նշանակում է, որ օպերացիան ավարտվել է սխալի հետ:
  • pending վիճակից fulfilled կամ rejected անցումը տեղի է ունենում միայն մեկ անգամ և անվերատարելի:
  • մեթոդներ:
    • .then(onFulfilled, onRejected): ընդունում է երկու callback ֆունկցիաներ: Առաջինը (onFulfilled) կանչվում է հաջողության դեպքում, երկրորդը (onRejected)՝ սխալի դեպքում: Երկու արգումենտներն էլ օպցիոնալ են: Վերադարձնում է նոր պրոմիս:
    • .catch(onRejected): կարճ ձևը .then(null, onRejected): օգտագործվում է սխալների մշակման համար: Վերադարձնում է նոր պրոմիս:
    • .finally(onFinally): կանչվում է անկախ պրոմիսի արդյունքից (հաջողություն կամ սխալ): Օգտակար է ռեսուրսների մաքրման համար: Վերադարձնում է նոր պրոմիս:
  • Պրոմիսի ստեղծում:
new Promise((resolve, reject) => {
  // Ասինխրոնային օպերացիա
  const success = true;
  if (success) {
    resolve("Օպերացիան հաջողությամբ ավարտվեց!"); // անցում `fulfilled` վիճակին
  } else {
    reject("Ինչ-որ բան սխալ է..."); // անցում `rejected` վիճակին
  }
});
  • Պրոմիսների շղթայավորում: .then(), .catch(), .finally() վերադարձնում են պրոմիսներ, ինչը թույլ է տալիս ստեղծել շղթաներ՝ հաջորդական ասինխրոն օպերացիաները կատարելիս:
fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Սխալ:', error));