当前位置: 首页 > news >正文

环保网站建设方案wordpress前端后端

环保网站建设方案,wordpress前端后端,wordpress登录后转到wp首页,网络推广公司推荐并发批量请求处理器 ✨ 设计目标 该类用于批量异步请求处理,支持: 自定义并发数请求节拍控制(延时)失败重试机制进度回调通知 🔧 构造函数参数 new BulkRequestHandler({dataList, // 要处理的数据列表r…

并发批量请求处理器

✨ 设计目标

该类用于批量异步请求处理,支持:

  • 自定义并发数
  • 请求节拍控制(延时)
  • 失败重试机制
  • 进度回调通知

🔧 构造函数参数

new BulkRequestHandler({dataList,          // 要处理的数据列表requestFn,         // 每条数据的处理函数(返回Promise)concurrency = 5,   // 并发请求数delay = 100,       // 请求间隔时间(ms)retry = 3,         // 每条数据最大重试次数onProgressUpdate = () => {}  // 进度更新回调函数
})

🔁 核心执行流程

1. start() 启动任务处理

const workers = Array(this.concurrency).fill(null).map(() => this._worker());
await Promise.all(workers);
return this.results;
  • 启动多个“工人(worker)任务”并行处理数据。

  • 每个 worker 会不断从共享的 this.index 中取任务,直到任务取尽

2. _worker() 单个任务工人执行逻辑

while (this.index < this.dataList.length) {const currentIndex = this.index++;const item = this.dataList[currentIndex];try {const result = await this._requestWithRetry(item, this.retry);this.results[currentIndex] = result;} catch (err) {this.results[currentIndex] = {name: item.name,address: item.address,error: err.message,success: false};}this.completed++;this.onProgressUpdate(this.completed);await new Promise((res) => setTimeout(res, this.delay));
}

流程说明:

  • 从共享索引中取出当前任务项。

  • 调用 _requestWithRetry() 尝试处理该项。

  • 处理完成或失败后记录结果。

  • 更新完成数量,并触发进度回调。

  • 可选的节拍等待,避免请求过快

3. _requestWithRetry() 重试机制处理

try {return await this.requestFn(item);
} catch (err) {if (retriesLeft <= 1) throw err;await new Promise(res => setTimeout(res, 200 * (this.retry - retriesLeft + 1)));return await this._requestWithRetry(item, retriesLeft - 1);
}

说明:

  • 如果请求失败,则根据剩余重试次数,指数退避式延迟后重试。

  • 最多重试 retry 次,失败则抛出错误交由上层处理

小结:执行顺序图

start()├─ 创建多个 worker 并发执行├─ 每个 worker 循环取任务│   ├─ 获取 dataList[index++]│   ├─ 尝试执行 requestFn(带重试)│   ├─ 记录结果到 results[]│   ├─ 调用进度回调│   └─ 可选 delay 等待└─ 所有 worker 结束后,返回 results

📚 示例代码

全部代码链接

http://www.dtcms.com/a/573444.html

相关文章:

  • 如何给网站备案山东网站搭建有限公司
  • veereal将在中国推广微型led技术
  • 对话 NuttX 创始人Gregory Nutt——openvela 与 NuttX 的 “双向奔赴” 新范式
  • 河北省地图谷歌seo网站优化
  • 湘潭知名网站建设网站静态页面生成
  • 从EMS看分布式能源发展:挑战与机遇并存
  • Java接入飞书发送通知消息
  • Vue.js 基础教程:从入门到实践
  • .net实现秒杀商品(Redis高并发)
  • 解决phpstudy 8.x软件中php8.2.9没有redis扩展的问题
  • 【MCP系列】飞书MCP使用
  • 阜新网站设计淮北市矿务局工程建设公司网站
  • 攻克维吾尔语识别的技术实践(多语言智能识别系统)
  • [Windows] 漫画翻译工具Saber Translator2.5.1
  • 手术机器人智能控制系统基本课时项目化课件(2025.08.25)
  • NATS安装与配置完全指南
  • 开发网站如何选需要注意什么汉川网页设计
  • seo根据什么具体优化想做个卷帘门百度优化网站
  • Rust 练习册 7:高阶生命周期与高阶 trait 限定
  • Linux服务器通过密钥登录服务器
  • 网站开发2008家纺外发加工订单网
  • 广州地铁站路线图广告设计师证怎么考
  • 【拾遗补漏】.NET 常见术语集
  • 从零开发一个简单的Web爬虫(使用Requests和BeautifulSoup)
  • 荷城网站设计做网站找哪家最好
  • Hadoop 分布式计算MapReduce和资源管理Yarn
  • DOM XMLHttpRequest
  • day08(11.5)——leetcode面试经典150
  • XML CDATA 区块详解
  • 网站专题页优化网站推广南京公司