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