Vue通过axios实现接口防抖

这篇博客介绍了如何使用axios拦截器来避免重复的网络请求。通过定义stopRepeatRequest函数检查特定URL的请求,阻止不必要的重复请求,并在请求完成后使用allowRequest清理请求列表。这种方法有助于优化前端应用的性能和用户体验。
摘要由CSDN通过智能技术生成

一、使用步骤

1.引入方法

//引入axios
import axios from 'axios'
Vue.prototype.$axios = axios

代码如下(示例):

//过滤请求事件
const stopRepeatRequest = (reqList, url, errorMessage) => {
    if (url.indexOf('upload/uploadChunkFile') !== -1 || url.indexOf('api/chat/getUserHistoryMsgs') !== -1 || url.indexOf('api/chat/ackUserOffLineMsgs') !== -1) {
        return false
    }
    if (reqList.length) {
       const arr = reqList.filter(item => item === url)
        if (arr.length) {
            console.log(errorMessage, 49)
            return true
        }
    }
    reqList.push(url)
}
//接口请求完成后清除
const allowRequest = (reqList, url) => {
    if (reqList.length) {
        requests = reqList.filter(item => item !== url)
    }
}
//请求
// request interceptor
request.interceptors.request.use(async config => {
  // 如果 token 存在
  // 让每个请求携带自定义 token 请根据实际情况自行修改
//   if (token) {
//     config.headers['Access-Token'] = token
//   }
    const flag = await stopRepeatRequest(requests, config.url, `${config.url} 请求重复`)
    if (flag) {
        return
    }
    return config
})
//响应
request.interceptors.response.use(
    (response) => {
        allowRequest(requests, response.config.url) // 过滤掉已结束的请求
        //后边的代码正常编写
        })
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值