axios.interceptors.response.use((response) => {
if (response.data.error_no !== '0') {
showErrorMsg(response.data.error_info);
return Promise.reject(response);
}
return response.data;
}, (error) => {
Toast.offline('网络传输错误', 1);
return Promise.reject(error);
});
针对返回内容做了一下拦截,如果error_no !== '0'
就认为是请求错误(比如未登录等等),这时候会把错误信息提示给用户。
设置了这个拦截器之后,我写的请求格式如下:
axios.get('xxxx').then((res) => {
// 请求成功
// DO STH
})
// 如果要处理Promise抛出的异常的话,每个请求后面都得带上catch:
axios.get('xxxx').then((res) => {
// 请求成功
// DO STH
}).catch((err) => {
console.log(err);
})
实际上开发者并没有对捕获到的err做什么处理,每个axios请求都带上catch显得很麻烦、累赘。
第一:有没有什么方法统一设置下 处理这个异常? 省得控制台老是报错 Uncaught (in promise)
第二:如果不设置异常处理,应用程序会有什么问题吗?比如容易奔溃、不稳定等等
我在axios的issue里找到了这个解决方案:how to break promise chain in interceptors?
作者不建议这样做,可能认为异常还是要处理一下比较好吧~~~