Vue项目,采用的axios做数据提交。axios做的全局拦截
先上代码:
axios.interceptors.request.use(config => {
if (!filterPermission(config.method, config.url)) { // 路由权限校验
return Promise.reject({ message: NO_PERMISSION_MSG })
}
return config
}, error => {
return Promise.reject(error)
})
axios.interceptors.response.use(response => {
return response
}, error => {
console.log('error', error)
message.error(error.message || '请求出错,请稍后重试!')
return Promise.reject(error)
})
export default {
// 普通post方法
post(url, data = {}, customConfig = {}) {
return axios(Object.assign({
method: 'post', // 请求协议
url: url, // 请求地址
data: JSON.stringify(data), // post 请求参数
timeout: ajaxTimeout, // 超时时间
headers: {
'Content-Type': 'application/json; charset=UTF-8'
}
}, customConfig)).then(checkStatus).catch(err => {
console.log('err', err)
// return { data: {}}
return Promise.reject(err)
})
}
}
现在问题就出在最后的axios方法的catch里面,这个catch里面返回Promise.reject()是会在页面报错说是Uncaught (in promise);
如果直接return false会在页面调用的时候返回数据;
this.$http.post(URL_MANAGE_USERlIST, this.query).then(res => {
console.log('这里会接收到res的数据,只是数据为空')
})
我的本来想法是axios在拦截到错误信息后就直接提示错误,并不再继续执行下去。
能不能有什么办法在catch里面在执行return Promise.reject(err)时不会再控制台上面报错
return Promise.reject(err) 为什么要加这句呢?
这句创建了一个新的Promise并且决议状态为拒绝,后面没有reject函数处理这个决议值,所以就报错啦。既然后面啥都不想处理,不要这句就得了。