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

如何优化从分页API拉取数据的现有JavaScript代码?

优化方案

你的需求是并发拉取全部分页、收集所有成功返回的数据、所有请求结束后统一返回结果,用Promise.allSettled可以完全替代你手动维护请求状态、判断结束时机的冗余逻辑,优化后代码如下:

async function myFunc () {
  const totalPages = await getTotalPages()
  // 生成所有分页的请求Promise数组
  const requestList = Array.from({length: totalPages}, (_, pageNum) => getPage(pageNum))
  // 等待所有请求结束(无论成功失败)
  const requestResults = await Promise.allSettled(requestList)

  const allPages = []
  requestResults.forEach((result, pageNum) => {
    if (result.status === 'fulfilled') {
      allPages.push(...result.value)
    } else {
      console.log(pageNum, result.reason)
    }
  })

  return { all_pages: allPages }
}

优化说明

  • 完全去掉了手写Promise封装、手动维护完成/失败计数、重复判断结束条件的冗余代码,逻辑直观易读
  • 并发请求效率和原有实现完全一致,没有额外性能损耗
  • 后续如果要加失败页重试逻辑也非常方便,只需要筛选出失败的页码重新发起请求即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:48:02