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

如何调用API的1至10页结果?当前仅支持单页请求

获取API多页结果的实现方案

要拿到1到10页的完整结果,你需要循环请求每一页的数据,再把所有结果合并——毕竟绝大多数分页API都不支持直接请求一个范围的页面,只能一页一页获取。下面是修改后的代码:

const loc = document.getElementById("locationcity").value;
const start = document.getElementById("startdate").value;
const end = document.getElementById("enddate").value;

// 先构造不带page参数的基础查询URL
const baseQueryUrl = `${baseUrl}/location?name=${loc}&minDate=${start}&maxDate=${end}`;

// 存储所有页面请求的Promise对象
const pageRequests = [];

// 循环生成1到10页的请求
for (let page = 1; page <= 10; page++) {
  const currentPageUrl = `${baseQueryUrl}&page=${page}`;
  // 把每个页面的请求Promise加入数组
  pageRequests.push(
    fetch(currentPageUrl)
      .then(res => res.json())
      // 处理单个页面请求失败的情况,避免影响整体
      .catch(err => {
        console.error(`第${page}页请求失败:`, err);
        return [];
      })
  );
}

// 等待所有请求完成,拿到所有页面的结果
const allPageData = await Promise.all(pageRequests);

// 合并所有页面的结果(假设每个接口返回的是数组;如果是带data字段的对象,改成allPageData.flatMap(item => item.data))
const combinedResults = allPageData.flat();

console.log("合并后的1-10页数据:", combinedResults);

几点补充说明

  • 用模板字符串拼接URL比concat更简洁,可读性更强。
  • Promise.all是并行发起所有请求,比逐个await串行请求效率更高;如果API有请求频率限制,可改成串行循环(把fetch放在for循环里加await)。
  • 要确认API的分页参数确实是page,有些API会用pageNumber、p这类参数名,需要对应调整。
  • 如果API返回总页数,也可以根据总页数动态循环,而不是固定死10页,灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:45