实现在路由跳转后,把上一个页面正在请求的资源关闭。
- 在发起请求时拦截请求加入代码
javascript
// 拦截请求
instance.interceptors.request.use((req) => {
req.cancelToken = new axios.CancelToken(cancel => {
if (!window._axiosPromiseArr){
window._axiosPromiseArr = [];
}
window._axiosPromiseArr.push({cancel});
});
});
- 在全局路由跳转前写入代码
javascript
router.beforeEach((to, from, next) => {
console.log('[访问路由]' + (to.name || to.path))
if (window._axiosPromiseArr) {
window._axiosPromiseArr.forEach((ele, index) => {
// 路由跳转前,终止上一个页面正在请求的内容
ele.cancel();
delete window._axiosPromiseArr[index];
})
}
return next();
})