首页 > 其他分享 >axios 重复提交

axios 重复提交

时间:2024-04-15 15:00:35浏览次数:21  
标签:function requestKey axios const reqQueue 重复 提交 config

const { default: axios } = require("axios")
const qs = require('qs')
function regsoleKey(config) {
  const { method, url, params, data } = config;
  return [method, url, qs.stringify(params), qs.stringify(data)].join('&')
}
const reqQueue = new Map();
function addreqQueue(config){
    //调用生成唯一标识值函数, 生成 requestKey
    const requestKey = regsoleKey(config);
    //为每个请求创建一个专属的 CancelToken(用于取消请求)
    config.cancelToken = config.cancelToken || new axios.CancelToken((cancel)=>{
        // 判断 reqQueue 中是否含有 requestKey, 
        // 将 requestKey 与 CancelToken 以键值对的形式保存到map对象中
        if(!reqQueue.has(requestKey)){
            reqQueue.set(requestKey,cancel)
        }
    });
}
function removereqQueue(config){
  // 标识值
  const requestKey = generateReqKey(config);
  if(reqQueue.has(requestKey)){
      // 取消之前发出请求
     const cancelToken = reqQueue.get(requestKey);
     cancelToken(requestKey);
      // 从队列移除
     reqQueue.delete(requestKey);
  }
}
serviceAxios.interceptors.request.use(
    function(config) {
        removereqQueue(config); // 检查是否重复发送请求
        addreqQueue(config); //将本次请求加入请求队列
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)
serviceAxios.interceptors.request.use(
    function(config) {
        removereqQueue(config); // 检查是否重复发送请求
        addreqQueue(config); //将本次请求加入请求队列
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

 

标签:function,requestKey,axios,const,reqQueue,重复,提交,config
From: https://www.cnblogs.com/howhy/p/18135983

相关文章

  • git 提交之前的检查
    要使用pre-commit钩子,你需要执行以下步骤:找到.git/hooks目录:在你的Git仓库中,找到.git/hooks目录。这个目录包含了所有的Git钩子脚本。创建pre-commit钩子文件:在.git/hooks目录下创建一个名为pre-commit的文件。你可以使用任何文本编辑器创建这个文件。编写pre......
  • 13-axios 传递参数的方式(data 与 params 的区别)
    Axios官方网址:起步|Axios中文文档|Axios中文网(axios-http.cn)参考文章:axios传递参数的方式(data与params的区别)-知乎(zhihu.com) Axiosa大家都非常的清楚,一个既可以用于客户端或者 服务端发送http请求的库。但是在前后端联调的时候有的时候会很难受,所以这里我......
  • 代码随想录算法训练营第9天 | 字符串(KMP算法) 28. 找出字符串中第一个匹配项的下标
    leetcode28.找出字符串中第一个匹配项的下标题目28.找出字符串中第一个匹配项的下标给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。解题思路实现代......
  • 本地升级idea后,不能向github上提交代码问题处理
    问题现象:本人自己电脑之前一直使用idea2018.1商业破解版,之前有简历本地代码仓库,并在github上建立了关联的远程代码仓库。最近本人在本地升级一下idea,从idea2018.1商业版升级到2023.1.5社区版本(idea支持win7的版本基本就到2023.1这个版本了,目前本人尝试安装了2023.1.5和2023.1.3......
  • 基于Vue 的axios简单封装
    在static/mock下建一个模拟数据文件json1.json{"a1":123,"a2":567}在文件目录下新建src/utlis/http.js//src/utlis/http.jsimportaxiosfrom"axios";exportdefault(function(){functionqa(arr){let_iqaob=new_iqa(),......
  • JZ76 删除链表中重复的节点
    1、相似题classSolution{public:ListNode*deleteDuplicates(ListNode*head){//判空if(head==NULL)returnnullptr;ListNode*p1=head;ListNode*p2=p1->next;while(p2){......
  • windows下的重装是最笨也是最简单的重复解决问题的方法,解决goldendict的qt库链接问题
    goldendict✔goldendict:symbollookuperror:goldendict:undefinedsymbol:_ZN10QAudioSink12stateChangedEN6QAudio5StateE,versionQt_6~yay-Sgoldendict......
  • Git 提交 Umi Max 项目报错:Invalid commit message format
    Git提交UmiMax项目报错:Invalidcommitmessageformat1、发现问题使用UmiMax构建的项目,commit(提交)时报错!.2、分析问题⚠️提交信息需要满足某些固定的消息格式。1、项目根目录的.umirc.ts文件中verifyCommit属性用于验证commitmessage信息。.2、配置文件......
  • 代码写完,开发完成一个功能之后,需要将代码提交上去提交到哪里?
    代码写完开发完成一个功能之后,需要将代码提交上去。提交到哪里?github、gitlab、gitee本地仓库每一个项目都有一个本地仓库远程仓库gitee202308-class提交代码:提交到本地仓库-->由本地仓库再提交到远程仓库 1、拉取远程仓库的项目gitcloneurl如果报错:Permissi......
  • 182 查找重复的电子邮箱
    182查找重复的电子邮箱表: Person+-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||email|varchar|+-------------+---------+id是该表的主键(具有唯一值的列)。此表的每一行都包含一封电子邮件。电子......