JavaScript-ում պրոմիսի վիճակները
Պրոմիսը կարող է գտնվել երեք վիճակներից մեկում։ Ստեղծման պահին պրոմիսը գտնվում է սպասման մեջ (pending), ապա կարող է դառնալ կատարված (fulfilled)՝ վերադարձնելով ստացված արդյունքը, կամ մերժված (rejected)՝ վերադարձնելով ձախողման պատճառը։ Դուք կարող եք տեսնել մի վիճակից մյուսին անցումը՝ գործարկելով հետևյալ կոդը։
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // դրեք կամ true, կամ false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // ամեն վայրկյան տպում ենք պրոմիսը կոնսոլում
}, 1000);
Հաշվի առեք, որ fulfilled և rejected վիճակները անփոփոխ են․ եթե պրոմիսը անցել է այս վիճակներից մեկին, ապա այլևս չի կարող անցնել մյուսին։ Եկեք նայենք օրինակով։ Հետևյալ կոդում reject կանչը կտեղի ունենա ավելի շուտ, ուստի resolve կանչը կանտեսվի։
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Ստեղծեք մի պրոմիս, որը որոշ ժամանակ անց կկատարվի հաջողությամբ։ Տպեք այն կոնսոլում և ուսումնասիրեք դրա սկզբնական և ավարտված վիճակները։
Ստեղծեք մի պրոմիս, որը որոշ ժամանակ անց կձախողվի։ Տպեք այն կոնսոլում և ուսումնասիրեք դրա սկզբնական և ավարտված վիճակները։