Promises (Խոստումներ)
"Ասինխրոն գործողությունների կառավարման ժամանակակից գործիքը։"
Promise-ի 3 վիճակները
Promise-ը միշտ գտնվում է այս 3 վիճակներից մեկում.
- Pending (Սպասում): Սկզբնական վիճակը, երբ գործողությունը դեռ չի ավարտվել։
- Fulfilled / Resolved (Կատարված): Գործողությունը հաջողությամբ ավարտվել է։
- Rejected (Մերժված): Տեղի է ունեցել սխալ։
5. Mermaid վիզուալիզացիա (Flow)
Ստեղծում և Օգտագործում
Promise ստեղծելու համար օգտագործում ենք
new Promise կոնստրուկտորը, որը ստանում է երկու
ֆունկցիա՝ resolve և reject:
const success = true;
setTimeout(() => {
if (success) {
resolve("Տվյալները հաջողությամբ բեռնվեցին:");
} else {
reject("Սխալ տեղի ունեցավ:");
}
}, 2000);
});
// Օգտագործումը
myPromise
.then(data => console.log(data)) // Եթե resolve եղավ
.catch(err => console.error(err)) // Եթե reject եղավ
.finally(() => console.log("Գործողությունն ավարտվեց:"));
Promise Chaining (Շղթայական կանչեր)
Սա Promise-ի ամենահզոր կողմն է։ Մենք կարող ենք կապել մի քանի
.then() իրար, և ամեն հաջորդը կստանա նախորդի
վերադարձրած արժեքը։
.then(response => response.json()) // Վերադարձնում է նոր Promise
.then(user => user.name) // Վերցնում ենք անունը
.then(name => console.log(name)) // Տպում ենք
.catch(err => console.log(err)); // Մեկ catch-ը բավարար է ամբողջ շղթայի սխալները բռնելու համար
Static Methods (Promise-ի մեթոդները)
Երբ աշխատում ես մի քանի Promise-ների հետ միաժամանակ.
Promise.all()
Promise.all([p1, p2, p3])
Promise.allSettled()
Promise.allSettled([p1, p2])
Promise.race()
Promise.race([p1, p2])
Promise.any()
Promise.any([p1, p2])
Promise.resolve()
Promise.resolve(value)
Promise.reject()
Promise.reject(error)
Promise.withResolvers()
const { promise, resolve, reject } =
Promise.withResolvers()
Promise.try()
Promise.try(() => func())
💡 Pro-Tip Masterclass-ի համար
Promise-ը չի վերացնում ասինխրոնությունը, այլ այն դարձնում է «կառավարելի»։ Սա կամուրջ է դեպի Async/Await, որը Promise-ի վրա կառուցված ավելի գեղեցիկ սինտաքս է։