В качестве замены jquery и XHR-callback hell-a использую fetch:
fetch("http://localhost/getData",
{
credentials: "omit",
cache: "no-cache",
headers: {
"Accept": "application/json"
}
})
.then((response) => response.json())
.then((json) =>
{
processData(json);
}
)
.catch(function(error) {
//if (error.message == 'Failed to fetch' || error.message == 'NetworkError when attempting to fetch resource.') {
if (error.message.search('fetch') > -1 ) {
alert('Ошибка связи');
} else {
alert('Возникла ошибка: ' + error);
}
});
Хочу корректно обработать все варианты ошибок, например если сервер возвращает не 200-й ответ, то я могу проверить response.ok
Проблема в том, что если сетевой ресурс вообще недоступен (проблема сети или сервер не запущен) то в блоке catch я не вижу об этом явного указания, разные браузеры возвращают разный текст ошибки - Chrome - "Failed to fetch", Firefox - "NetworkError when attempting to fetch resource". Приходится городить костыли см. выше.
Есть ли какой более элегантный вариант?