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

如何在Node.js中同时调用数组中的多个URL

并行调用多个API接口的实现方案

原来的map遍历只是逐个发起请求,但如果要统一管理所有请求的结果、确保并行执行并处理整体成功/失败状态,用Promise.all()是标准解决方案。

你的URL数组

"ResponseServer": [
    "https://ResponseServer1/home/",
    "https://ResponseServer2/home/",
    "https://ResponseServer3/home/"
]

1. 基础并行实现(全成功才返回结果)

// 把每个接口请求转换成Promise对象,组成任务数组
const requestTasks = ResponseServer.map(url => axios.post(url, data));

// 用Promise.all并行执行所有请求
Promise.all(requestTasks)
  .then(allResponses => {
    // 所有请求成功时,allResponses是每个接口的响应结果数组
    allResponses.forEach((res, idx) => {
      console.log(`第${idx+1}个接口返回数据:`, res.data);
    });
  })
  .catch(error => {
    // 只要有一个请求失败,就会触发这里
    console.error('某个接口请求失败:', error);
  });

2. async/await写法(更直观)

async function sendParallelRequests() {
  try {
    const requestTasks = ResponseServer.map(url => axios.post(url, data));
    const allResponses = await Promise.all(requestTasks);
    
    // 处理所有成功响应
    allResponses.forEach((res, idx) => {
      console.log(`接口${idx+1}结果:`, res.data);
    });
  } catch (err) {
    console.error('请求出错:', err);
  }
}

// 调用执行
sendParallelRequests();

3. 允许部分请求失败的场景

如果希望不管接口成功还是失败,都能拿到每个请求的结果,改用Promise.allSettled():

const requestTasks = ResponseServer.map(url => axios.post(url, data));

Promise.allSettled(requestTasks)
  .then(results => {
    results.forEach((result, idx) => {
      if (result.status === 'fulfilled') {
        console.log(`接口${idx+1}成功:`, result.value.data);
      } else {
        console.log(`接口${idx+1}失败:`, result.reason.message);
      }
    });
  });

注意:你原来代码里的变量名Resposnserver有拼写错误(少了字母e),建议修正避免后续bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:10:49