Potpuno presretanje AJAX grešaka u JavaScript-u
Promis koji vraća fetch,
završava se greškom samo ako je došlo do
greške mreže. Ako server vrati odgovor
sa statusom 404 ili 500,
tada će promis biti uspešno završen,
ali status ok će biti
postavljen na false.
Hajde da presretnemo oba tipa grešaka:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
console.log('loš status odgovora');
return '';
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
Učinimo da se greška, povezana
sa lošim HTTP statusom odgovora, takođe
hvata blokom catch.
Za ovo ćemo je proslediti dalje
preko throw:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
throw new Error('loš status odgovora');
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
Ispišite tekst stranice, ako je zahtev bio uspešan, i grešku, ako je nešto pošlo po zlu.