axios.CancelToke取消请求

公共方法封装.js

// axios 取消请求
let [timer, pedding] = [null, {}];
export const __catchAPI = (path, callback, config) => {
  if (typeof callback === 'function') {
    // 请求接口的时候 加入pendding
    const row = {
      cancelXhr: true,
      config,
      data: {
        timestamp: new Date(),
        path,
        error: 'cancel_xhr',
        message: '取消请求接口'
      }
    };
    pedding[path] = () => callback(row);
    // 避免内存扩大 10秒后 清除pending
    clearTimeout(timer);
    timer = setTimeout(() => (pedding = {}), 10000);
  } else {
    // 没有callback 就执行停止请求操作
    const reg = new RegExp(`${path}$`);
    const k = Object.keys(pedding).find(u => reg.test(u));
    if (!k) return;
    pedding[k]();
    delete pedding[k];
  }
};

二次封装axios

import __catchAPI from '公共方法封装.js';

const Cancel = axios.CancelToken;
service.interceptors.request.use(config => {
  config.headers['Content-Type'] = 'application/json';
  if (!config.headers.token && store.getters.token) {
    config.headers['token'] = store.getters.token;
  }
  // 配置全局加载
  if (config.loading) {
    showFullScreenLoading();
  }
  config.cancelToken = new Cancel(cb => __catchAPI(config.url, cb, config));
  return config;
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值