You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX请求优化:50个串行请求,每5个后延迟10秒并弹窗

修正后的AJAX串行请求实现

以下是符合需求的修正代码,实现了串行发送50个AJAX请求、每完成5个延迟10秒、全部完成弹出提示的功能:

var requestCount = 50; // 总请求数
var delayAfter = 5;    // 每完成N个请求后延迟
var delaySeconds = 10; // 延迟时长(秒)
var requestCounter = 0;

function makeRequest() {
  // 先判断是否已完成所有请求
  if (requestCounter >= requestCount) {
    alert('所有请求已完成!');
    return;
  }

  $.ajax({
    url: "request.php?action=manualGroupMembers",
    success: function(response) {
      // 这里可处理请求成功后的逻辑
      console.log('请求成功:', response);
      
      requestCounter++;
      
      // 判断是否需要延迟:完成的请求数是5的倍数,且还没到总请求数
      if (requestCounter % delayAfter === 0 && requestCounter < requestCount) {
        setTimeout(makeRequest, delaySeconds * 1000);
      } else {
        // 不需要延迟则直接发起下一个请求
        makeRequest();
      }
    },
    error: function(error) {
      // 请求失败的处理逻辑,这里选择终止后续请求并提示
      console.error('请求失败:', error);
      alert('请求失败,已终止后续操作');
    }
  });
}

// 启动第一个请求
makeRequest();

关键修改说明

  • 串行请求保证:把下一个请求的调用放在AJAX的success回调中,只有当前请求成功返回后,才会触发下一个请求,彻底解决原代码并行发送的问题。
  • 延迟逻辑修正:将触发延迟的条件改为requestCounter % 5 === 0,同时设置延迟时长为10秒,符合需求中“每完成5个请求后延迟10秒”的要求。
  • 完成提示添加:在函数开头判断计数器是否达到总请求数,满足条件时弹出提示框。
  • 错误处理优化:请求失败时终止后续请求并给出提示,避免无效的重复尝试(如果需要重试逻辑,可在此处修改为重试次数判断后重新调用makeRequest)。

内容的提问来源于stack exchange,提问作者egam321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:00:28