JavaScript. Предусмотреть тот случай, если сервер API не отвечает на запрос

Мне нужно заранее предусмотреть в перехвате ошибок тот случай, если сервер не ответил на запрос. Как это оформить в виде кода?

Допустим, так перехватываются ошибки, если поиск не дал результата. Но я не знаю, как написать код, который перехватывает ошибку в случае, если сервер не ответил на запрос. Хотя бы подскажите учебный материал.

.catch(function() {
      alert("Ничего не найдено, попробуйте еще раз!");
});

Ответы (1 шт):

Автор решения: Aziz Umarov

Для начала предложу 3 варианта исторически так сложилось. Примеры взяты из developer.mozilla.org

  1. С использованием Callback на базе XMLHttpRequest

    
     oReq.addEventListener("progress", updateProgress, false);
     oReq.addEventListener("load", transferComplete, false);
     oReq.addEventListener("error", transferFailed, false);
     oReq.addEventListener("abort", transferCanceled, false);
    
     oReq.open();
    
     // ...
    
     // состояние передачи от сервера к клиенту (загрузка)
     function updateProgress (oEvent) {
       if (oEvent.lengthComputable) {
         var percentComplete = oEvent.loaded / oEvent.total;
         // ...
       } else {
         // Невозможно вычислить состояние загрузки, так как размер неизвестен
       }
     }
    
     function transferComplete(evt) {
       alert("Загрузка завершена.");
     }
    
     function transferFailed(evt) {
       alert("При загрузке файла произошла ошибка.");
     }
    
     function transferCanceled(evt) {
       alert("Пользователь отменил загрузку.");
     }```
    
    
  2. C использованием Fetch Api

fetch('http://example.com/movies.json')
  .then((response) => {
    return response.json();
  })
  .then((data) => {
    console.log(data);
  }).catch((err) => {  
    console.log('Fetch Error :-S', err);  
  });
  1. Вариант это через try catch в паре с await
try {
  const response = await fetch(url, {
    method: 'POST', // или 'PUT'
    body: JSON.stringify(data), // данные могут быть 'строкой' или {объектом}!
    headers: {
      'Content-Type': 'application/json'
    }
  });
  const json = await response.json();
  console.log('Успех:', JSON.stringify(json));
} catch (error) {
  console.error('Ошибка:', error);
}

→ Ссылка