为了确保我们的请求成功,首先,我们检查互联网连接,然后发送我们的请求。
像这样:
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 或离开应用程序,因为他们位于禁运国家/地区!
另一方面,catch有什么意义!?如果它没有捕获错误!
谢谢。
其实这是我们这边的错误,react-native遇到这种情况就会崩溃console.error
。
因此,通过将上面的代码更改为这个版本,您将摆脱红屏:
NetInfo.isConnected.fetch().then(async isConnected=> {
if(isConnected){
try {
let result = await fetch(MY_REMOTE_SERVER);
console.log("result: ", result)
} catch (error) {
// use "log" instead of "error"
console.log("error: ", error);
// or you may want to show a toast on error like
oastAndroid.show('No internet', ToastAndroid.SHORT)
}
}else ToastAndroid.show('No internet', ToastAndroid.SHORT);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)