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

如何将数组元素作为GET请求参数并汇总所有响应为JSON

问题描述

我有如下格式的数组:

const Data = [
  {
      user: '123456'
    },
  { 
      user: '123456'
    },
  {
      user: '123456'
    }
]

对应的REST API GET请求路由为:

router.get(`/courses/:user`)

我想将Data数组中每个元素的user值作为参数发起GET请求(请求示例:localhost:8000/courses/123456),并把所有请求的响应汇总成一个JSON数组。用forEach实现没成功,期望得到类似如下格式的结果:

var output = [{response1},{response2}, {response3}]
解决方案

核心问题说明

forEach是同步遍历逻辑,无法等待异步请求完成就会走完循环,所以没法正确收集所有请求的响应结果。需要用Promise.all配合异步遍历的方式来处理。

实现代码示例

方式一:使用 axios + async/await

const axios = require('axios'); // Node环境需安装axios,浏览器环境直接引入即可

const Data = [
  { user: '123456' },
  { user: '123456' },
  { user: '123456' }
];

async function getAllResponses() {
  // 将每个用户的请求转为Promise实例
  const requestTasks = Data.map(item => {
    return axios.get(`http://localhost:8000/courses/${item.user}`);
  });

  // 等待所有请求完成,获取全部响应
  const allResponses = await Promise.all(requestTasks);

  // 提取响应中的数据,整理成目标格式
  const output = allResponses.map(res => res.data);
  console.log(output);
  return output;
}

// 执行函数
getAllResponses();

方式二:使用原生 fetch + async/await

const Data = [
  { user: '123456' },
  { user: '123456' },
  { user: '123456' }
];

async function getAllResponses() {
  const requestTasks = Data.map(item => {
    return fetch(`http://localhost:8000/courses/${item.user}`)
      .then(response => response.json()); // 解析响应为JSON格式
  });

  const output = await Promise.all(requestTasks);
  console.log(output);
  return output;
}

getAllResponses();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:25:24