Popolno prestrezanje AJAX napak v JavaScriptu
Promise, ki ga vrne fetch,
se konča z napako le, če je prišlo do
napake omrežja. Če pa strežnik vrne odgovor
s statusom 404 ali 500,
bo promise uspešno zaključen,
vendar bo status ok
nastavljen na false.
Prestrežimo obe vrsti napak:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
console.log('slab status odziva');
return '';
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
Poskrbimo, da se bo napaka, povezana
s slabim statusom HTTP odziva, prav tako
ujela v bloku catch.
Za to jo preusmerimo naprej
z throw:
button.addEventListener('click', function() {
let promise = fetch('/ajax.html')
.then(
response => {
if (response.ok) {
return response.text();
} else {
throw new Error('slab status odziva');
}
},
).then(
text => {
console.log(text);
}
).catch(
error => {
console.log(error);
}
);
});
Izpišite besedilo strani, če je bila zahteva uspešna, in napako, če je šlo kaj narobe.