m0_60877809 2022-02-16 16:15 采纳率: 72.7%
浏览 105
已结题

vue中的拦截器 写了提示但是 在校验登录是否过期的时候 重复提示了



const config = {
  baseUrl: localConfig.url,
  timeOut: 15000
};

let server = new Server({
  baseUrl: config.baseUrl,
  timeOut: config.timeOut
});

server.bindLoading(Vue.$loading);

// 前后拦截
server.interceptors.request.use(requestSuccess, requestError);

server.interceptors.response.use(responseSuccess, responseError);

function requestSuccess(config) {
  // 开启遮罩层
  if (!config.hideLoading && config.show) {
    server.loading.show();
  }

  config.url = `${API_PREFIX}/${config.url}`;

  // 如果存在证书信息,则放到 header 里面
  if (localStorage.getItem('certInfo')) {
    config.headers.UKEY_SERIALNO = localStorage.getItem('certInfo');
  }
  return config
}

function requestError(error) {
  Promise.reject(error)
    .then(res => {})
    .catch(err => {
      if (err.config.show) {
        // 关闭弹窗
        server.loading.hide();
      }
    });

  return Promise.reject(error);
}

function responseSuccess(res) {
  if (res.config.show) {
    // 关闭弹窗
    server.loading.hide();
  }

  const status = res.status,
    code = res.data.errno;
  if (status === 200) {
    switch (code) {
      case 0: // 成功
        break;
      case -1: // 错误
        Message.warning(res.data.errmsg);
        break;
      case 401: // 参数不对
        Message.warning(res.data.errmsg);
        break;
      case 402: // 参数值不对
        Message.warning(res.data.errmsg);
        break;
      case 403: // 审核备注不能为空
        Message.warning(res.data.errmsg);
        break;
      case 501: // 请登录
        var isLogin = localStorage.getItem('loginName');
        if (isLogin != null) {
          Message.warning('登录过期,请登录');
          router.push({
            path: '/home/Login?t=' + Date.now()
          });
        } else {
          Message.warning('未登录,请登录');
          router.push({
            path: '/home/Login?t=' + Date.now()
          });
        }
        localStorage.clear();
        sessionStorage.clear();
        break;
      case 502: // 系统内部错误
        Message.warning(res.data.errmsg);
        break;
      case 503: // 业务不支持
        Message.warning(res.data.errmsg);
        break;
      case 504: // 更新数据已失效
        Message.warning(res.data.errmsg);
        break;
      case 505: // 更新数据失败
        Message.warning(res.data.errmsg);
        break;
      case 506: // 无操作权限
        Message.warning(res.data.errmsg);
        break;
      default:
        Message.warning(res.data.errmsg);
    }
    return res.data;
  } else if (status === 500) {
    Message.error('系统升级中');
  }

  // let i = 0,
  //   length = httpStatus.length,
  //   item = null;
  // for (; i < length; i++) {
  //   item = httpStatus[i]
  //   if (res.status === item.code) {
  //     console.log(itme.msg)
  //     return res.data
  //   }
  // }
}

如代码所示 在登录token过期后 点击发起了重复的请求 导致501的时候 返回来多次提示 要怎么解决呢

  • 写回答

1条回答 默认 最新

  • _念_ 2022-02-16 16:19
    关注

    直接取消重复请求

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 创建了问题 2月16日

悬赏问题

  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥15 关于超局变量获取查询的问题
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题
  • ¥15 汇编语言实现加减法计算器的功能
  • ¥20 关于多单片机模块化的一些问题
  • ¥30 seata使用出现报错,其他服务找不到seata
  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。