栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

封装axiso请求防抖

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

封装axiso请求防抖

//request.js文件中
import axios from "axios";
//import些你需要的插件或者数据...
let requests=[];//请求防抖需要收集请求中的集合,并控制过滤


const service = axios.create({
  baseURL: process.env.BASE_URL, // 接口基础路径
  timeout: 5000  // 请求超时时间
  // transformResponse 允许自定义原始的响应数据(字符串)
  transformResponse: [function (data) {
    try {// 如果转换成功则返回转换的数据结果return JSON.parse(data)
    } catch (err) {// 如果转换失败,则包装为统一数据格式并返回return data}
  }]
})



service.interceptors.request.use(async config => {
    
     // 阻止重复请求。当上个请求未完成时,相同的请求不会进行
    let flag = await stopRepeatRequest(requests, config.url, `${config.url} 请求重复`)
    if (flag) {return}
    if (!config.method) {config.method = "get";}//设置默认请求方式
    try {setConfig(config);} catch (error) {console.error(error);}//预设请求头
    //...此处可以考虑添加一些请求loading样式或者什么的
    return config;
}, error => {//请求错误处理,如结束loading什么的操作等 Promise.reject(error)})
    
    


service.interceptors.response.use(
    response => {  //成功请求到数据
        //这里根据后端提供的数据进行对应的处理等
        allowRequest(requests, response.config.url)//过滤掉已结束的请求
         if (code === "-9000") {//前后端约定的一些返回处理}
        return response.data;
    },
    error => {  //响应错误处理
       allowRequest(requests, response.config.url)//过滤掉已结束的请求
        if (code === "-9000") {//前后端约定的一些返回处理}
        return Promise.reject(error)
    }
);
// 拦截request,设置全局请求为ajax请求
function setConfig(config, fetch) {
    let headers = {};
    // 用户登录后获取的token
    headers["token"] = config.headers["token"] = electronStore.get("token") || "";
   //预设更多的请求头....
    if (fetch) {
        return headers;
    }
}
//请求中的URL集合
function 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) {
       let arr= reqList.filter(item=>item==url)
        if(arr.length){
            console.log(errorMessage,49)
            return  true
        }
    }
    reqList.push(url)
}
//单个请求结束后的URL
function allowRequest (reqList, url) {
    if (reqList.length) {
        requests=reqList.filter(item=>item!=url)
    }
};
export default service;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号