პრომისებში გამონაკლისი სიტუაციები 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('შეცდომა პრომისში'); // თქვენი შეცდომის ტექსტი
}
}, 3000);
});
შემდეგ then მეთოდში პარამეტრებად თქვენ უნდა
გადასცეთ არა ერთი, არამედ ორი ფუნქცია: პირველი იმუშავებს,
თუ პრომისმა იმუშავა ნორმალურად (რეზოლვდება),
ხოლო მეორე - თუ მუშაობდა შეცდომით (რეჯექტდება):
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-მდე.
შემოახვიეთ ეს ყველაფერი პრომისში. პრომისმა თავისი შედეგით
დააბრუნოს ერთეულის გაყოფის შედეგი გენერირებულ
რიცხვზე. პრომისი დაასრულოს შეცდომით,
თუ მოხდა გაყოფა ნულზე, და წარმატებით
ყველა სხვა შემთხვევაში.