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

Chrome控制台批量发送fetch请求如何添加间隔避免服务器异常

解决方案

现有写法问题

你当前的实现存在两个核心问题:

  • forEach方法不支持异步等待,回调内的await不会阻塞下一轮迭代,所有fetch请求会几乎同时触发,瞬间超过服务器负载阈值
  • 缺少请求间隔控制逻辑

实现代码

首先封装一个基于Promise的等待工具函数,搭配async/await实现可控的等待效果,避免原生setTimeout回调嵌套的问题:

// 入参为等待时长,单位:毫秒
const sleep = (delayMs) => new Promise(resolve => setTimeout(resolve, delayMs));

将原forEach循环替换为支持异步等待的for...of循环,在两次请求之间插入等待逻辑:

// 可根据服务器承受能力调整间隔时长,示例为1000即两次请求间隔1秒
const REQUEST_INTERVAL = 1000;

// 要确保外层函数是async修饰的,否则无法使用await
for (const req of request) {
  await fetch(url, req);
  // 上一个请求完成后,等待指定时长再发起下一次请求
  await sleep(REQUEST_INTERVAL);
}

逻辑说明

该实现完全避免了setInterval可能出现的请求堆叠问题:只有当上一个请求响应完成、且间隔时长走完之后,才会发起下一个请求,请求节奏完全可控,不会出现服务器未处理完存量请求就又收到新请求的情况。
如果需要在请求发起前等待,将await sleep(REQUEST_INTERVAL)放到fetch代码前即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:45:06