Javascript Fetch API:如何确定错误是否为网络错误
所以我有一些类似这样的代码: 异步函数getData(){ 常量响应=等待获取(/*…*/); const json=await response.json(); 返回转换(json); } 其中,Javascript Fetch API:如何确定错误是否为网络错误,javascript,fetch-api,Javascript,Fetch Api,所以我有一些类似这样的代码: 异步函数getData(){ 常量响应=等待获取(/*…*/); const json=await response.json(); 返回转换(json); } 其中,transform可以抛出它自己的一些错误 我正在尝试从fetchAPI捕获网络错误 试试看{ const data=wait getData(); // ... 返回/。。。 }捕获(e){ 如果(isNetworkError(e)){ 返回localStorage.getItem(“…”);
transform
可以抛出它自己的一些错误
我正在尝试从
fetch
API捕获网络错误
试试看{
const data=wait getData();
// ...
返回/。。。
}捕获(e){
如果(isNetworkError(e)){
返回localStorage.getItem(“…”);
}
投掷e;
}
我的问题是如何实现跨浏览器工作的isNetworkError
?注意:只有在网络脱机时,此选项才应返回true
chrome和firefox似乎都抛出了一个TypeError
,但它们各自的消息不同
- Firefox:
TypeError:“尝试获取资源时出现网络错误。”
- Chrome:
TypeError:获取失败
我没有一个完美的答案给你。解决确切问题的最简单方法是将
isNetworkError
实现为类型保护。也许firefox/chrome错误对象上有一些公共属性,允许您专门检测这些属性
另一种方法是捕捉更接近您执行fetch()
操作的错误,并将错误重新显示为您可以轻松检测到的内容
async function getData() {
let response;
try {
response = await fetch(/* ... */);
} catch (err) {
throw new MyCustomNetworkError(err.message);
}
const json = await response.json();
return transform(json);
}