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

如何将循环fetch接口返回的多个数组合并为一个数组?

合并多个fetch返回的数组

你可以通过Promise.all(或Promise.allSettled)批量处理所有请求,再合并结果数组,具体实现如下:

基础实现(所有请求必须成功)

// 生成包含所有请求Promise的数组
const requestPromises = Array.from({ length: 150 }, (_, index) => {
  const url = `A valid URL ${index + 1}`;
  return fetch(url)
    .then(response => response.json())
    .then(data => data.data.results);
});

// 等待所有请求完成,合并数组
Promise.all(requestPromises)
  .then(allResultArrays => {
    // 使用flat()合并所有子数组
    const mergedArray = allResultArrays.flat();
    console.log(mergedArray);
  })
  .catch(error => {
    console.error('请求过程中出现错误:', error);
  });

健壮性实现(允许部分请求失败)

如果担心个别请求失败导致整个流程中断,可以用Promise.allSettled过滤成功的结果再合并:

Promise.allSettled(Array.from({ length: 150 }, (_, index) => {
  const url = `A valid URL ${index + 1}`;
  return fetch(url)
    .then(response => response.json())
    .then(data => data.data.results);
}))
.then(results => {
  const mergedArray = results
    .filter(item => item.status === 'fulfilled') // 只保留成功的请求结果
    .map(item => item.value)
    .flat(); // 合并所有子数组
  console.log(mergedArray);
})
.catch(error => {
  console.error('处理结果时出错:', error);
});

关键说明

  • Promise.all会等待所有请求成功完成,若任一请求失败则直接触发catch
  • Array.from({ length: 150 })用来生成150个元素的数组,替代原有的for循环,写法更简洁
  • flat()方法可以直接将二维数组展开为一维数组,也可以用[].concat(...allResultArrays)实现相同效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:25:43