Axios使用CancelToken取消重复请求

这篇具有很好参考价值的文章主要介绍了Axios使用CancelToken取消重复请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

处理重复请求:没有响应完成的请求,再去请求一个相同的请求,会把之前的请求取消掉
Axios使用CancelToken取消重复请求,Module,javascript,前端,开发语言
新增一个cancelRequest.js文件

import axios from "axios"
const cancelTokens = {}

export const addPending = (config) => {
    const requestKey = getRequestKey(config)
    if (cancelTokens[requestKey]) {
        cancelTokens[requestKey].cancel('cancel request')
    }
    const source = axios.CancelToken.source()
    cancelTokens[requestKey] = source
    config.cancelToken = source.token
}

export const deletePending = (res) => {
    const requestKey = getRequestKey(res.config)
    if (cancelTokens[requestKey]) {
        delete cancelTokens[requestKey]
    }
}

const getRequestKey = (config = {}) => {
    return config.url + config.method + JSON.stringify(config.params, config.data)
}

request.js文章来源地址https://www.toymoban.com/news/detail-655093.html

import axios from "axios"
import { baseUrl } from "@/config"
import { addPending, deletePending } from "./cancelRequest"
const service = axios.create({
    baseURL: baseUrl,
    timeout: 100000,
})
service.interceptors.request.use(
    config => {
        addPending(config)
        return config
    },
    error => {
        return Promise.error(error)
    }
)

service.interceptors.response.use(
    success => {
        deletePending(success)
    },
    error => {
        deletePending(error)
    }
)

export default service

到了这里,关于Axios使用CancelToken取消重复请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • axios使用axiosSource.cancel取消请求后怎么恢复请求,axios取消请求和恢复请求实现

    在前端做大文件分片上传,或者其它中断请求时,需要暂停或重新请求,比如这里大文件上传时,可能会需要暂停、继续上传,如下GIF演示: 这里不详细说文件上传的处理和切片细节,后续有时间在出一篇,大文件上传,切片上传、断点续传、秒传等😀。 不扯远了,紧接本

    2024年02月12日
    浏览(33)
  • axios CancelToken 实现对特定请求的拦截,不要所有请求都进行相同的拦截

    一旦给 axios 添加了拦截器,就会对所有的 post、get 等请求进行拦截。但不是所有的请求都需要进行拦截,如公共的请求,即不需要用户登录即可发起请求的 api 我们应当放行。 通过 axios.interceptors.request.eject(requestId) 清除 request 或者 response 的拦截器。想要再次恢复就需要重新

    2024年02月05日
    浏览(28)
  • axios中取消请求的使用

    1.全局定义一个axios控制器变量 axiosController 2.配置axios 对象signal 3.创建setAxiosController函数 导出变量、函数 每次调用axiosController.abort()方法后就需要重新调用setAxiosController; axios官网 取消请求 mdn官网 AbortController在fetch中的使用

    2024年02月07日
    浏览(36)
  • antdesign+vue+ts自定义上传文件customRequest,显示进度条onProgress,axios请求中断axios.CancelToken。

    customRequest里面有一个data参数,data包含了对file文件上传状态的操作:例如:onSuccess、onProgress、onError等 和file文件。 改变文件上传状态:可以通过改变fileList里面file的status和respones。 踩坑: 1、在customRequest文件上传完成以后,会自动重新更新一下fileList文件。上传之前挂载在

    2023年04月25日
    浏览(25)
  • axios如何取消请求,其原理是什么?

    原文合集地址如下,有需要的朋友可以关注 本文地址 axios 可以通过创建一个 CancelToken 来取消一个请求,基本原理是: 创建一个 CancelToken 的实例,它有一个 executor 函数,可以通过调用 executor 参数中的 cancel 函数来取消请求。 在 axios 请求配置中指定 cancelToken 属性,将 CancelToken 实例

    2024年02月12日
    浏览(26)
  • 封装axios请求重试和路由切换时请求取消

    请求重试函数:这里注意两个变量__retryCount 和retry分别代表当前次数和重试次数。如果请求中没有配置retry则正常进行不会进行重试。 请求取消我这里的场景是路由切换时,将上次路由全部取消也可以配置部分取消。注意变量noCancel,他来控制那些不需要被取消。 回顾axios请

    2024年02月21日
    浏览(33)
  • 简单易懂:Axios 如何取消请求的两种方法

    在前端开发中,网络请求是非常常见的操作。而有时候,我们可能需要在发送请求后取消它,比如用户在请求还未完成时离开了当前页面或者执行了其他操作,本文将介绍如何在使用 Axios 发送请求时取消这些请求。 在 Axios 中,取消请求的基本思路是创建一个用于取消的标记

    2024年01月19日
    浏览(40)
  • vue2/3 axios 请求重试、取消请求、loading 串行并行等(分享)

    基础版,添加 loading 在请求响应拦截器里面添加 loading,这样就不需要给每一个请求添加 loading 了 这些代码都是 vue2 项目的,vue3 也通用,改一下 loading 和 message 就好了(主要是 element 的区别) 我这里最后没有合并代码,有的配置不适合写在一起,看自己项目的需要 响应状态

    2024年02月10日
    浏览(41)
  • 前端网络请求之JavaScript XHR、Fetch、Axios

    AJAX:一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。在不重新加载整个网页的情况下,对网页的某部分进行更新 Fetch:基于 promise 设计的。Fetch 的代码结构比起 ajax 简单多。fetch 不是 aj

    2024年01月23日
    浏览(33)
  • .NET Core使用 CancellationToken 取消API请求

    您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击 F5 重新加载页面。 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将触发 5 个请求。 为了解决这个问题,ASP.NET Core 为 Web 服务器

    2024年03月17日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包