Чтобы убедиться, что наш запрос будет успешным, сначала мы проверяем подключение к интернету, а затем отправляем наш запрос.
как это:
NetInfo.isConnected.fetch().then(async isConnected=> {
if(isConnected){
try {
let result = await fetch(MY_REMOTE_SERVER);
console.log("result: ", result)
} catch (error) {
console.error("error: ", error);
}
}
else ToastAndroid.show('No internet', ToastAndroid.SHORT);
});
Все было хорошо, пока я не столкнулся с этой проблемой: рассмотрим ситуацию, в которой доступ к серверу для некоторых стран заблокирован.
Итак, хотя с интернетом все в порядке, каждый раз я получал network request failed
ошибку.
Я не смог найти проблему, потому что ожидал, что catch
напечатает ошибку, но мое приложение просто зависало.
Теперь, когда я знаю причину, я не знаю, как ее решить.
Например, когда невозможно установить соединение, я хочу предупредить пользователя об использовании VPN или покинуть приложение, потому что они находятся в стране, на которую распространяется эмбарго!
С другой стороны, какой смысл ловить !? если это не ловит ошибку!
спасибо.