Volledige interceptie van AJAX-fouten in JavaScript

De promise die door fetch wordt geretourneerd, wordt alleen met een fout beëindigd als er een netwerkfout is opgetreden. Als de server echter een antwoord heeft geretourneerd met status 404 of 500, dan wordt de promise succesvol afgesloten, maar de status ok zal dan op false worden gezet.

Laten we beide soorten fouten onderscheppen:

javascriptbutton.addEventListener('click', function() {
  let promise = fetch('/ajax.html')
  .then(
    response => {
      if (response.ok) {
        return response.text();
      } else {
        console.log('slechte antwoordstatus');
        return '';
      }
    },
  ).then(
    text => {
      console.log(text);
    }
  ).catch(
    error => {
      console.log(error);
    }
  );
});

Laten we ervoor zorgen dat de fout, gerelateerd aan een slechte HTTP-antwoordstatus, ook wordt opgevangen door het catch blok. Hiervoor gooien we deze verder via throw:

javascriptbutton.addEventListener('click', function() {
  let promise = fetch('/ajax.html')
  .then(
    response => {
      if (response.ok) {
        return response.text();
      } else {
        throw new Error('slechte antwoordstatus');
      }
    },
  ).then(
    text => {
      console.log(text);
    }
  ).catch(
    error => {
      console.log(error);
    }
  );
});
Задание 1

Toon de tekst van de pagina als het verzoek succesvol was, en een fout als er iets misging.