Поўны перахоп 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);
}
);
});
Выведзіце тэкст старонкі, калі запыт быў паспяховым, і памылку, калі нешта пайшло не так.