如何调用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
相关产品推荐
相关产品推荐

