@ivandao

Как обработать неудачные http-запросы?

Хочу обработать неудачные http-запросы. Делаю их при помощи fetch.
Чтобы понять, что запрос неудачен и чтобы отправить его снова я вставляю конструкцию try-catch

try {
    t = await fetch(...).then(...)
} catch (err)  {

}


Я хочу указать время timeout'а, спустя которое, если promise fetch'a остался в состоянии pending (ответ от сервера не вернулся), то запрос считать неуспешным и отправить его еще раз.
Все ли это можно реализовать на фронтэнде, или часть нужно дописывать на бэке?

Как вообще все это реализовать по-человечески?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ahen
@Ahen
Универсальный дилетант
function timeout(ms, promise) {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      reject(new Error("timeout"))
    }, ms)
    promise.then(resolve, reject)
  })
}

timeout(1000, fetch('/hello')).then(function(response) {
  // process response
}).catch(function(error) {
  // might be a timeout error
})


Источник
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы