← 中文资源

简体中文版本

类型化异步并发池映射

在类型化并发池中运行异步任务,按序收集结果,正确类型推断。

阅读英文原文

示例说明

在类型化并发池中运行异步任务,按序收集结果,正确类型推断。本示例属于数据获取场景,提供可直接复制使用的typescript代码片段,附带边界条件与使用注意事项。

技术要点

  • readonly T[] 只读输入防修改
  • R[] 预分配按索引保序
  • Math.min 避免空转 runner

代码解读

上述代码实现了类型化异步并发池映射的核心逻辑。在类型化并发池中运行异步任务,按序收集结果,正确类型推断。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。readonly T[] 只读输入防修改,R[] 预分配按索引保序。这些设计确保代码在生产环境中的健壮性。

使用建议

在实际项目中使用本示例时,建议先理解类型化异步并发池映射的适用场景与限制条件。Math.min 避免空转 runner。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。

代码示例

export async function asyncPool<T,R>(items:readonly T[],worker:(item:T,index:number)=>Promise<R>,concurrency=4):Promise<R[]>{const results:R[]=new Array(items.length);let next=0;async function run(){while(next<items.length){const i=next++;results[i]=await worker(items[i],i);}}await Promise.all(Array.from({length:Math.min(concurrency,items.length)},run));return results;}