AJAX-virheiden täydellinen sieppaus JavaScriptissä

Lupaus, jonka fetch palauttaa, valmistuu virheellä vain, jos verkkovirhe tapahtui. Jos palvelin palauttaa vastauksen statuksella 404 tai 500, lupaus valmistuu onnistuneesti, mutta tällöin tila ok on asetettu arvoon false.

Siepataanpa molemmat virhetyypit:

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

Tehdään niin, että HTTP-vastauksen huonoon statukseen liittyvä virhe myös saadaan kiinni catch -lohkossa. Tätä varten heitetään se eteenpäin käyttämällä throw:ia:

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

Tulosta sivun teksti, jos pyyntö onnistui, ja virhe, jos jokin meni pieleen.