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

如何并行调用fetchData并按Promise完成时间重排ids数组

解决方案

要实现按Promise完成耗时对ids排序,核心是给每个fetchData调用绑定对应的id和开始时间,待Promise完成后计算耗时,再基于耗时排序。具体实现如下:

const main = async () => {
  const ids = [1, 2, 3, 4, 5];
  
  // 给每个id对应的请求包装,记录id和耗时
  const timedPromises = ids.map(id => {
    const startTime = Date.now();
    return fetchData(id).then(() => {
      const duration = Date.now() - startTime;
      return { id, duration };
    });
  });
  
  // 等待所有请求完成,得到包含id和耗时的数组
  const results = await Promise.all(timedPromises);
  
  // 按耗时从小到大排序,提取id得到最终排序后的数组
  const sortedIds = results.sort((a, b) => a.duration - b.duration).map(item => item.id);
  
  console.log('按完成耗时排序后的ids:', sortedIds);
}

代码说明

  • 遍历ids时,为每个请求记录开始时间startTime。
  • 当fetchData的Promise完成后,计算从开始到完成的耗时duration,并返回包含id和duration的对象。
  • 用Promise.all等待所有请求完成后,对结果数组按duration升序排序,最后提取id得到排序后的ids数组。

这样既保证了所有请求并行发起,又能准确跟踪每个id对应的请求耗时,从而完成排序需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:05:04