因项目原因,需要在请求失败时重新请求数据,确保必须拿到数据
基于Vue2+,axios
先封装axios请求,必须设置请求超时如下:
封装重试请求函数:
// 重新请求
function tautology(err) {
let back = new Promise(function (resolve) {
console.log('接口' + err.config.url + '请求失败,重新请求');
resolve();
})
return back.then(function () {
return instance(err.config);
})
};
在响应拦截内进行拦截把请求失败的请求传给封装的重试请求函数再次请求,可无限重试:
instance.interceptors.response.use(res => {
if (res.data.code == 500) {
Message({message: `错误代码${res.data.code}`, type: 'error'})
}
if (res.status == 200) {
return res.data
}
}, err => {
// console.log