Если fetch вызова терпит неудачу в Chrome, то только деталь ошибки, что я вернусь естьКак обрабатывать ошибки JavaScript Fetch?
TypeError: Failed to fetch
Как отобразить сообщение об ошибке информативного для конечного пользователя в этом случае?
В частности:
Можно ли получить какие-либо подробности о том, почему, не удалось?
Например, если сервер разбился, Chrome DevTools может регистрировать консольное сообщение net: ERR_EMPTY_RESPONSE, но, похоже, нет способа получить к нему доступ из JavaScript.
Насколько я могу судить, ответ отрицательный; Я предполагаю, что это по соображениям безопасности, чтобы избежать вредоносного JS выяснить, какие сайты и недоступны, проверяя сообщения об ошибках.
Можно ли отличать ошибки выборки от других TypeError
?
Если я не могу получить информацию об ошибке, я бы хотел, по крайней мере, заменить ужасно неопределенное «Не удалось получить» с информативным сообщением «Не удалось получить доступ к веб-сайту, попробуйте еще раз позже», и я 'd хотел бы сделать это без какого-либо риска отображать это сообщение для других TypeError
s.
Единственное, что я нашел здесь, это проверить фактический message
, чтобы узнать, есть ли он "Failed to fetch"
. Это явно зависит от браузера; он работает в Chrome, похоже, что он будет работать на любом пользовательском языке Chrome, а другим браузерам потребуется собственное тестирование и обработка.
'TypeError' кажется, что ... на самом деле неправильный тип ошибки. Странный. –
'.catch' не подходит для вас? –
@JaromandaX - '.catch' работает, но я хотел бы получить информацию об ошибке, если это возможно (мой первый вопрос), и чтобы избежать неправильной ловушки других' TypeError' как ошибок выборки, я чувствую, что мне нужно либо поставить '.catch' _very_ близко к' fetch' (так что никаких других ошибок не может возникнуть, таким образом теряя гибкость в том, как я структурирую свои обещания), или полагайтесь на поведение, специфичное для браузера, например текст сообщения «Отправить» (мой второй вопрос). –