Ajax 解决回调竞争

回调的竞争,即多次快速点击同一按钮导致多个异步的AJAX请求同时返回,导致数据更新顺序混乱。这种情况在异步编程中很常见,特别是前端开发时,AJAX请求的回调并不保证按顺序执行。

$.ajaxSetup() 可以设置全局的 beforeSendcomplete 回调函数,这样每个 AJAX 请求在发送前和完成后都可以执行相应的逻辑。

复制代码
let isRequestPending = false;

$.ajaxSetup({
    beforeSend: function(jqXHR, settings) {
        if (isRequestPending) {
            jqXHR.abort();  // 如果有请求正在进行,取消当前请求
            return false;    // 阻止请求发送
        }
        isRequestPending = true;  // 设置请求进行中的状态
    },
    complete: function() {
        isRequestPending = false;  // 请求完成后重置状态
    }
});
相关推荐
HelloReader4 分钟前
Tauri 2.1 新特性自定义 HTTP Headers 配置详解
前端
一点一一22 分钟前
从输入URL到页面加载:浏览器多进程/线程协同的完整逻辑
前端·面试
juejin_cn32 分钟前
[转][译] 从零开始构建 OpenClaw — 第六部分(持久化记忆)
javascript
HelloReader35 分钟前
Tauri 的安全架构Capabilities 与 CSP
前端
juejin_cn40 分钟前
[转][译] 从零开始构建 OpenClaw — 第七部分(子智能体系统)
javascript
阿懂在掘金40 分钟前
Vue 表单避坑(二):多个 v-model 同时更新,为什么数据丢了?
前端·vue.js
鹏北海1 小时前
Qiankun 微前端实战踩坑历程
前端·架构
前端一课1 小时前
OpenClaw 项目全面架构分析报告
前端·人工智能
HelloReader1 小时前
Tauri 的 Capabilities 权限管理系统
前端
喵爱吃鱼2 小时前
关于我明明用了ref还是陷入React闭包陷阱
前端·react.js