实际项目开发中我们会遇到登录系统之后项目会加载数据,但是有些庞大的项目接口非常繁琐 在数据没有加载结束的时候切换页面 会比较慢 还有报错的提示 这时候就需要用到优化
在请求拦截里增加全局存储接口的变量
import axios from 'axios';
import Vue from "vue";
import {Toast} from "vant";
Vue.use(Toast)
const service = axios.create({
// timeout: 10000,
headers: {
'content-type': 'application/json'
}
})
window._axiosPromiseArr = []
service.interceptors.request.use(
config => {
config.cancelToken = new axios.CancelToken(cancel => {
window._axiosPromiseArr.push({ cancel })
})
return config
},
error => {
console.log(error)
return Promise.reject(error)
}
);
然后在切换路由的时候
router.beforeEach((to, from, next) => {
window._axiosPromiseArr.forEach((ele,index) => {
ele.cancel() // 路由跳转之前,清空(终止)上一个页面正在请求的内容
// 清空请求的参数 清空请求的参数
delete window._axiosPromiseArr[index]
Toast.clear(); //这个是清除我们的提示信息
})
next();
})
以上是针对与路由跳转时我们的页面情况
当然我们也不可避免的会遇到 2个按钮切换时的接口请求
還有上述的情況 接口沒有加載完畢的情況下推出登錄就會報很多提示的錯誤
layout() {
window._axiosPromiseArr.forEach((ele,index) => {
ele.cancel() // 路由跳转之前,清空(终止)上一个页面正在请求的内容
// 清空请求的参数 清空请求的参数
delete window._axiosPromiseArr[index]
Toast.clear();
})
}