Целосно пресретнување на 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);
}
);
});
Прикажете го текстот на страницата, ако барањето било успешно, и грешка, ако нешто тргнало наопаку.