Vue3实战笔记(10)—再次封装扩展AXIOS-拦截重复请求


前言

对已经封装好了的工具类整体再加一层封装添加一些功能,便于灵活应用。例如增加防止重复点击功能,缓存功能等等。


一、封装shrequest.ts

新建shrequest.ts:


import shaxios from '@/utils/shaxios'

let sh_req = (function () {
    let repeatUrl:Array<string> = [] //重复请求
    debugger
    return function(config?:any){
        debugger
        let url = config.url
        if(repeatUrl.indexOf(url) > -1){//如果有重复的url
            // return Promise.reject(new Error("请不要重复提交!"))   
            return Promise.reject({message:"请不要重复提交!"})
        }
        //如果没有重复请求就存入重复请求数组再发送请求,如果下次请求来了,成功之前没有清除数组就会认为是重复提交
        repeatUrl.push(url)
        //发送请求,成功后清除url
        return shaxios({
            ...config //扩展运算符的使用
        }).then((res:any)=>{
            repeatUrl = repeatUrl.filter((repUrl)=>{ //请求已经成功,删除数组中用于判断重复url的值
                return repUrl !== url
            })

            return res
        })
    }
})() //闭包,括号中用于传参(闭包作用?)

export {
    shaxios as shrequest, //导出原shaxios供使用
    sh_req //导出新封装了重复提交功能的新sh_req
}

二、使用步骤

代码如下(示例):


import {sh_req,shrequest} from '@/utils/shrequest'

//注意由于定制拦截传参限制了config,sh_req只支持这种方式调用了
sh_req({
  method:"get",
  url:"/hellosh",
}).then((response: any)=>{
    console.log(response)
})

总结

在软件开发中,对已经封装好的工具类进行进一步的封装并添加新的功能是一种常见的设计模式。这种做法通常用于扩展现有工具类的功能、增强其灵活性或使其更加易于使用。建议配合前面文章结合实践。

相关推荐

  1. vueaxios封装拦截

    2024-05-12 09:52:07       12 阅读
  2. 2024 axios封装 包括请求拦截、错误码等

    2024-05-12 09:52:07       28 阅读
  3. Vue3+Vite+Axios Request 请求封装(TS版本)最新

    2024-05-12 09:52:07       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 09:52:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 09:52:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 09:52:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 09:52:07       18 阅读

热门阅读

  1. gin:01-框架安装

    2024-05-12 09:52:07       6 阅读
  2. Python中的多线程与多进程编程:深入解析与应用

    2024-05-12 09:52:07       11 阅读
  3. c语言之打开一个文件

    2024-05-12 09:52:07       8 阅读
  4. 00 深度学习 PyTorch框架介绍

    2024-05-12 09:52:07       8 阅读
  5. Spring如何解决循环依赖

    2024-05-12 09:52:07       9 阅读
  6. SD321放大器3V输入电流电压保护二极管25C电源电流

    2024-05-12 09:52:07       13 阅读
  7. react Hooks

    2024-05-12 09:52:07       8 阅读
  8. React Native vs Flutter:2023年移动开发框架对比

    2024-05-12 09:52:07       7 阅读
  9. React Native跨平台开发实战:从零到一

    2024-05-12 09:52:07       11 阅读
  10. 学习Vue3中reactive

    2024-05-12 09:52:07       12 阅读
  11. Docker在macbook搭建lnmp环境

    2024-05-12 09:52:07       11 阅读