zoukankan      html  css  js  c++  java
  • 切换路由时取消全部或者部分axios请求,并将一些从不需要取消的加入白名单

    1. axios拦截器进行配置,除了白名单中的接口,统统保存到全局变量canCancelAxios中

    window.canCancelAxios = [];
    
    // http request 拦截器
    axios.interceptors.request.use(
    	config => {
    		let whiteList = ['/test1', '/test2']; // 白名单接口
    		if (config.url && whiteList.every(item => !config.url.includes(item))) {
    			config.cancelToken = new axios.CancelToken(function (c) { window.canCancelAxios.push({ key: config.key || "", cancel: c }) });
    		}
    		return config;
    	},
    	err => {
    		return Promise.reject(err);
    	}
    )
    

    2. 定义一个取消取消axios的方法

    /**
     * 取消axios请求
     * @param cellArr 要取消的接口;如果不传参,则取消canCancelAxios保存的所有接口
     */
    export function cancelAxios(cellArr = []) {
      if (cellArr.length > 0) {
        cellArr.forEach(val => {
          for (let i = 0; i < window.canCancelAxios.length; i++) {
            if (window.canCancelAxios[i].key === val) {
              window.canCancelAxios[i].cancel();
              window.canCancelAxios.splice(i, 1);
              i--;
            }
          }
        })
      } else {
        for (let i = 0; i < window.canCancelAxios.length; i++) {
          window.canCancelAxios[i].cancel();
          window.canCancelAxios.splice(i, 1);
          i--;
        }
      }
    }
    

    3. 路由配置中,路由切换时,取消axios请求

    import cancelAxios from "***";
    router.beforeEach((to, from, next) => {
        cancelAxios();
        // 进行其他业务操作
    })
    

    4. 特殊情况下(比如切换tab页时),可能需要取消特定某些axios

    import cancelAxios from "***";
    cancelAxios(["axios1", "axios2"]);
    
    

    注意

    // 这里取消特定的axios是根据axios拦截器中config.key来识别接口的,所以接口请求时要配置key参数,不然不能正确取消;
    // 比如上面要取消的["axios1", "axios2"]
    test1: () => Axios.get(`/path1`, { key: "axios1" }),
    test2: () => Axios.get(`/path2`, { key: "axios2" })
    
  • 相关阅读:
    ffplay 2.5.3 媒体播放器
    MinGW/MSYS 交叉编译环境搭建
    python chm 中文帮助 (2.7 和 3.4)
    wx.html2.WebView在 target="_blank" or rel="external" 没有反映的解决方法
    韩星5,6号 一锅双星技巧
    暖房子工程
    CStringUtf8ToUnicode
    燃气灶中心炉芯帽子生锈了,如何拆不下来?
    翻窗户消失的百岁老人/百岁老人跷家去 中文字幕
    CPinyin unicode汉字查找拼音(支持多音字)
  • 原文地址:https://www.cnblogs.com/XHappyness/p/11383472.html
Copyright © 2011-2022 走看看