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

如何将Promise链合并为单个Promise?代码问题求助

解决Promise合并为单个Promise并返回合并结果的问题

你的代码问题在于循环中每次都重复执行Promise.all,且直接将Promise对象拼接到数组中,导致最终得到的是包含5个分页结果数组的Promise,而非合并后的100条数据。以下是修正后的实现:

修正后的代码

function xbox() {
    const gamesUrl = "https://api.rawg.io/api/games?key=f648fbbe7d024a9d9b021bbd24cea8b5";
    const pagePromises = [];

    for (let i = 1; i <= 5; i++) {
        // 为每个分页创建一个Promise,最终返回该页的游戏数组
        const pagePromise = fetch(`${gamesUrl}&page=${i}`)
            .then(res => res.json())
            .then(data => data.results.map(e => ({ ID: e.id })));
        
        pagePromises.push(pagePromise);
    }

    // 等待所有分页请求完成,再合并所有结果数组
    return Promise.all(pagePromises).then(allPages => allPages.flat());
}

关键改动说明

  • 统一收集所有分页请求的Promise:创建pagePromises数组,在循环中把每个分页请求处理后的Promise存入其中,避免循环内重复处理Promise。
  • 一次性等待所有Promise完成:循环结束后调用Promise.all(pagePromises),确保所有分页请求都成功返回后再处理结果。
  • 扁平化结果数组:通过flat()方法将包含5个分页数组的二维数组转换为一维数组,得到100条合并后的游戏数据。

内容的提问来源于stack exchange,提问作者Luis Daniel Arciniegas Barco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:55:15