Իսկույն իրավիճակները պրոմիսներում JavaScript-ում
Եկեք այժմ սովորենք մշակել պրոմիսի ներսում առաջացած իսկույն իրավիճակները: Նման իրավիճակի առաջացման դեպքում մենք պետք է մերժենք պրոմիսը օգտագործելով մերժման հատուկ ֆունկցիան, որը ավտոմատ կերպով հայտնվում է պրոմիսի ֆունկցիայի երկրորդ պարամետրում:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Պրոմիսի ֆունկցիայի ներսում մենք պետք է կանչենք
resolve, եթե ամեն ինչ անցել է նորմալ, կամ
reject, եթե առաջացել է իսկույն
իրավիճակ:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // պրոմիսի տվյալները
} else {
reject('error in promise'); // ձեր սխալի տեքստը
}
}, 3000);
});
Այնուհետև then մեթոդում պարամետրերով դուք պետք է
փոխանցեք ոչ թե մեկ, այլ երկու ֆունկցիա՝ առաջինը կգործի,
եթե պրոմիսը աշխատել է նորմալ (⁅d⁼rezolvvel⁼/d⁆),
իսկ երկրորդը՝ եթե աշխատել է սխալով (⁅d⁼zaredzhektvel⁼/d⁆):
promise.then(
function(result) {
console.log(result); // կարտածի պրոմիսի արդյունքը
},
function(error) {
console.log(error); // կարտածի սխալի տեքստը
}
);
Որպես կանոն, վերոնշյալ կոդը գրառում են ավելի կոմպակտ, ահա այսպես:
promise.then(function(result) {
console.log(result); // կարտածի պրոմիսի արդյունքը
}, function(error) {
console.log(error); // կարտածի սխալի տեքստը
});
Ստեղծեք ասինխրոն կոդ, որը կգեներացնի
պատահական թվեր 0-ից մինչև 5:
Ծրագրավորեք այս ամենը պրոմիսի մեջ: Թող պրոմիսն իր արդյունքում
վերադարձնի մեկը գեներացված թվի վրա բաժանելու արդյունքը:
Թող պրոմիսը կատարվի սխալով,
եթե տեղի է ունեցել զրոյի վրա բաժանում, և հաջողությամբ
մնացած բոլոր դեպքերում: