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

如何基于接口响应头在循环发送axios请求时实现暂停控制

原有代码的问题

  • 限流判断分支中使用了return,会直接终止当前函数执行,后续所有请求都会被中断,无法实现「暂停后继续发送」的需求
  • for...in更适合遍历对象可枚举属性,如果overallRequests是存储请求配置的数组,推荐用for...of遍历避免意外问题
  • 原有代码每次请求都复用同一个config,没有用到遍历出来的每个请求配置项,会导致所有请求参数重复

正确实现示例

// 入参overallRequests为存储所有请求配置的数组
async function sendBatchRequests(overallRequests) {
  for (const requestConfig of overallRequests) {
    const res = await axios(requestConfig);
    
    // 触达限流阈值时暂停60秒再继续
    if (Number(res.headers["ratelimit"]) < 100) {
      await new Promise(resolve => setTimeout(resolve, 60000));
    }

    // 此处可添加响应数据处理逻辑
    // handleResponse(res)
  }
}

实现说明

  • 用await等待延时Promise执行完成,而非直接返回,等待结束后会自动进入下一轮循环发送新请求
  • 对res.headers["ratelimit"]做了Number类型转换,避免响应头返回字符串类型导致判断逻辑异常
  • 遍历请求配置数组时取出每个请求的独立配置,保证每个请求参数正确
  • 如果需要支持手动终止请求队列的需求,可以在外部添加终止标记变量,每次循环开始前判断是否需要终止即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:03