Komplet afbrydelse af AJAX fejl i JavaScript

Promise'et, som fetch returnerer, fuldføres kun med en fejl, hvis der opstod en netværksfejl. Hvis serveren returnerede et svar med status 404 eller 500, så vil promise'et blive fuldført succesfuldt, men status ok vil være sat til false.

Lad os fange begge typer af fejl:

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

Lad os sørge for, at fejl relateret til dårlig HTTP svarsstatus også bliver fanget af catch blokken. For at gøre dette, kaster vi den videre via throw:

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

Vis sidens tekst, hvis anmodningen var succesfuld, og en fejl, hvis der gik noget galt.