AJAX შეცდომების სრული დაჭერა JavaScript-ში
პრომისი, რომელსაც აბრუნებს fetch,
შეცდომით სრულდება მხოლოდ მაშინ, თუ მოხდა
ქსელური შეცდომა. თუ სერვერმა დაუბრუნა პასუხი
სტატუსით 404 ან 500,
მაშინ პრომისი წარმატებით შესრულდება,
მაგრამ ამ შემთხვევაში სტატუსი ok იქნება
გაწყობილი false-ზე.
მოდით დავიჭიროთ შეცდომების ორივე ტიპი:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
console.log('პასუხის ცუდი სტატუსი');
return '';
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
მოვახდინოთ ისე, რომ HTTP პასუხის ცუდ სტატუსთან
დაკავშირებული შეცდომაც
დაიჭიროს catch ბლოკმა.
ამისთვის გადავაგდოთ ის შემდგომ
throw-ის საშუალებით:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
throw new Error('პასუხის ცუდი სტატუსი');
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
გამოიტანეთ გვერდის ტექსტი, თუ მოთხოვნა წარმატებული იყო, და შეცდომა, თუ რამე შეფერხდა.