JavaScript-ում AJAX սխալների ամբողջական բռնում
fetch-ի կողմից վերադարձված Promise-ը
սխալով է ավարտվում միայն այն դեպքում, եթե
առաջացել է ցանցի սխալ: Եթե սերվերը պատասխանել է
404 կամ 500 կարգավիճակով,
ապա Promise-ը կհամարվի հաջողակ ավարտված,
սակայն 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);
}
);
});
Ցուցադրեք էջի տեքստը, եթե հարցումը հաջող էր, և սխալը, եթե