axios终止之前的所有请求

1.在请求拦截器中的config对象添加cancelToken参数
// 将正在发起的请求存到数组中
let reqList = (Vue.prototype.pending = []);

// 构建axios实例
const cancelToken = axios.CancelToken;
const source = cancelToken.source();

const instance = axios.create();


instance.interceptors.request.use(
  (config) => {
    config.cancelToken = new cancelToken((c) => {
// 这里的C是一个函数,用于终止请求的作用
      // 这里的ajax标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
      reqList.push({ f: c });
      // }
    });
    // -----------------------------------------------------------------------------------------
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

Vue.prototype.$axios = instance;


//终止请求具体使用 请求之前调用该方法
removePending(errorMessage) {
      const errorMsg = errorMessage || "cancelRequest----取消请求默认信息";
      for (let i = this.pending.length - 1; i >= 0; i--) {
        this.pending[i].f(errorMsg); //执行取消操作
        this.pending.splice(i, 1); //把这条记录从数组中移除
      }
},

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐