Intercepción completa de errores AJAX en JavaScript

La promesa que devuelve fetch se rechaza solo si ocurre un error de red. Sin embargo, si el servidor devuelve una respuesta con estado 404 o 500, la promesa se resolverá correctamente, pero el estado ok será establecido en false.

Interceptemos ambos tipos de errores:

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

Hagamos que el error relacionado con un mal estado de respuesta HTTP también sea capturado por el bloque catch. Para ello, lo lanzaremos más adelante usando throw:

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

Muestre el texto de la página si la solicitud fue exitosa, y un error si algo salió mal.