Πλήρης Διεξαγωγή Σφαλμάτων AJAX σε JavaScript
Η υπόσχεση που επιστρέφει η fetch,
ολοκληρώνεται με σφάλμα, μόνο εάν προέκυψε
σφάλμα δικτύου. Εάν όμως ο διακομιστής επέστρεψε απάντηση
με status 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 απόκρισης, επίσης
να πιάνεται από το block 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);
}
);
});
Εμφανίστε το κείμενο της σελίδας, εάν το αίτημα ήταν επιτυχές, και το σφάλμα, εάν κάτι πήγε στραβά.