尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

js控制并发请求

js控制并发请求
📅 发布时间:2026/6/19 8:25:15

一. 设计思路

功能:目的在有限的并发池中运行多个 promise 返回和异步函数。

  1. 添加异步任务
  2. 执行异步任务
  3. 限制最大并发数量

二.实现


interface Fn {(): Promise<any>
}
export default class Pipeline {private list: { // 请求队列fn: Fn,resolve: (value: any) => voidreject: (err: any) => void}[]private count = 0 // 当前并发数量private max = 0 // 最大并发数量constructor (max: number) {this.max = maxthis.count = 0this.list = []}// 添加请求任务add (fn:Fn) {return new Promise((resolve, reject) => {this.list.push({fn,resolve,reject})this.run()})}// 执行任务run () {// 如果当前并发数小于最大并发数量if(this.count < this.max && this.list.length ) {const { fn, resolve, reject } = this.list.shift()!if(fn) {// 每执行一个,当前并发+1this.count++fn().then((res) => {resolve(res)}).catch(err => {reject(err)}).finally (() => {// 每完成一个请求this.count--this.run()}) }}}
}

三. 使用

import Pipeline from "./pipeline"
interface Fn {() : Promise<any>
}
// 创建50个请求
function createRequest () {const arr: Fn[] = []for(let i=0; i < 50; i++) {arr.push(() => new Promise((resolve, reject) => {setTimeout(() => {resolve(i)}, 2 * 2000)})) }return arr
}export async function request() {const pipeline = new Pipeline(1)const arr = createRequest()// 并发执行所有请求const promises = arr.map((fn, index) => {console.log("i", `第${index}个请求`)return pipeline.add(fn).then(res => {console.log("请求结果", res)return res})})// 等待所有请求完成await Promise.all(promises)}

相关新闻

  • Nestjs框架: 微服务与分布式架构解析之核心概念、应用场景与技术挑战 - 指南
  • 嗯欧哀批2025有机 - Gon
  • GitPulse:让代码的故事自己讲述

最新新闻

  • 2026广州防水补漏权威指南:卫生间/屋面/外墙/地下室正规施工+透明报价+避坑全攻略 - 苏易修缮
  • 生产级多维聚合:pandas中滚动计算、自定义指标与报表生成实战
  • 终极指南:用StegOnline轻松玩转图像隐写术,3分钟成为数字侦探!
  • 家装选购开店加盟参考|2026主流软装品牌三维度实力解析榜单 - 速递信息
  • Tp on
  • BiliTools:终极跨平台B站工具箱,一站式解决视频下载与智能管理难题

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号