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

JS中如何实现分批请求:完成一批后再执行下一批?

分批处理异步请求解决方案

核心思路

把所有请求按每10个一组拆分,利用async/await和Promise.all()实现:先发起当前批次的所有请求,等待全部完成后再处理下一批次。

代码实现

// 模拟单个请求函数,替换成你实际的请求逻辑
async function sendRequest(data) {
  // 这里替换为真实请求代码,比如fetch或axios调用
  return await fetch(`https://your-api-endpoint`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data)
  });
}

// 将请求数据拆分成指定大小的批次
function splitIntoBatches(arr, batchSize) {
  const batches = [];
  for (let i = 0; i < arr.length; i += batchSize) {
    batches.push(arr.slice(i, i + batchSize));
  }
  return batches;
}

// 分批处理请求的主函数
async function processRequestsInBatches(requestDataList, batchSize = 10) {
  const batches = splitIntoBatches(requestDataList, batchSize);
  
  for (const batch of batches) {
    // 等待当前批次所有请求完成后,再处理下一批
    await Promise.all(batch.map(data => sendRequest(data)));
    console.log(`当前批次完成,已处理${batch.length}个请求`);
  }
  
  console.log('所有请求处理完成');
}

// 使用示例:假设生成305个请求数据
const allRequestData = Array.from({length: 305}, (_, index) => ({id: index, content: `请求${index}`}));
processRequestsInBatches(allRequestData);

关键说明

  • splitIntoBatches:自动适配任意请求数量,将数组拆分为每10个一组的子数组,不管总数量是2还是305都能正常工作。
  • Promise.all():确保当前批次的所有请求都执行完成(成功或失败)后,才进入下一轮循环处理下一批。
  • 容错处理(可选):如果需要单个请求失败不影响整个批次,可在sendRequest中添加错误捕获:
async function sendRequest(data) {
  try {
    return await fetch(`https://your-api-endpoint`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data)
    });
  } catch (error) {
    console.error(`请求${data.id}失败:`, error);
    // 可返回错误标记,方便后续统计失败请求
    return { success: false, error, data };
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:43:14