поймать обработчик в цепочке обещаний, не фиксируя ошибку - PullRequest
0 голосов
/ 22 февраля 2020

Мой код - это простой пример выборки, который работает, когда указан правильный URL-адрес ресурса. Но когда я неправильно написал имя ресурса, я ожидал, что ошибка будет захвачена в блоке catch, но этого не произошло. Консоль записывает ошибку «Не удалось загрузить ресурс: сервер ответил с состоянием 404 (не найдено)

Мой код


      fetch('coffee.jpg')
                .then(response => response.blob())
                .then(blob => {

                    let myURL =  URL.createObjectURL(blob);
                    let img = document.createElement('img');
                    img.src = myURL;
                    document.body.appendChild(img);

                })
                .catch(err => {
                  console.log(" Error fetching file -  " + err.message);
                });

1 Ответ

2 голосов
/ 22 февраля 2020

Вы можете добавить промежуточное ПО обработчика ошибок, например:

function handleErrors(response) {
    if (!response.ok) {
        throw Error(response.statusText);
    }
    return response;
}

fetch('coffee.jpg')
  .then(handleErrors)
  .then(response => response.blob())
  .then(blob => {

    let myURL = URL.createObjectURL(blob);
    let img = document.createElement('img');
    img.src = myURL;
    document.body.appendChild(img);

  })
  .catch(err => {
    console.log(" Error fetching file -  " + err.message);
  });
...