尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
前端并发思路
看了前端很多文章我感觉并发不应该只是控制几个接口去发送应该考虑到每个接口完成的时间是不同的所以今天我试着写了一个如果并发中接口完成了请求就继续发送其他接口的js 简单测试了一下感觉没问题还请各位提个建议!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body script srchttp://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js/script script const endpoints [ () $.ajax({ url: https://jsonplaceholder.typicode.com/todos/1, method: GET, dataType: json, }), () $.ajax({ url: https://jsonplaceholder.typicode.com/todos, method: GET, dataType: json, }), () $.ajax({ url: https://jsonplaceholder.typicode.com/photos, method: GET, dataType: json, }), () $.ajax({ url: https://dog.ceo/api/breeds/image/random111, method: GET, dataType: json, }), () $.ajax({ url: https://jsonplaceholder.typicode.com/todos/4, method: GET, dataType: json, }), () $.ajax({ url: https://jsonplaceholder.typicode.com/todos/5, method: GET, dataType: json, }), ]; function parallelLimit(taskFns, limit) { const length taskFns.length; // 1) 空数组快速返回 if (length 0) return Promise.resolve([]); // 2) 并发数校验 if (!Number.isInteger(limit) || limit 1) { return Promise.reject(new Error(并发数必须为正整数)); } //3) 判断当前执行结果会有多少个 const results new Array(length); let completed 0; //记录执行了多少次 let nextIndex 0; //记录下一次执行的索引 return new Promise((resolve, reject) { // 创建runNext函数 function runNext() { // 如果下一次执行的索引大于等于数组长度返回 if (nextIndex length) return; // 获取当前执行的索引 const current nextIndex; Promise.resolve() // 开始执行任务 .then(() taskFns[current]()) // 成功后走这里 .then((res) { results[current] { status: 成功, res }; completed; }) //失败后走这里 .catch((error) { results[current] { status: 失败, error }; completed; }) // 无论成功还是失败都会走这里 .finally(() { if (completed length) { resolve(results); } else { runNext(); } }); } // 判断一下limit 是否大于length const starters Math.min(limit, length); for (let i 0; i starters; i) runNext(); }); } function main() { const concurrency 2; console.log(开始请求, 并发数 , concurrency); parallelLimit(endpoints, concurrency).then((results) { console.log(全部完成, 结果如下:); console.log(results); }); } main(); /script /body /html
RELATED

相关推荐

赋能采购革新:星合智联如何为企业开启TI芯片直采数字化新体验?

赋能采购革新:星合智联如何为企业开启TI芯片直采数字化新体验?

在半导体供应链备受关注的今天,如何稳定、高效、经济地获取关键芯片部件,是摆在每一位制造企业管理者面前的现实课题。德州仪器推出的TI API套件,为企业指明了一条通过数字化直连提升采购能效的路径。而伊士格科技的星合智联供应链协同平台&a…

📅 2026/9/9 16:24:27
三步上手跨平台电子书阅读器 Thorium Reader:开源桌面阅读软件体验手记

三步上手跨平台电子书阅读器 Thorium Reader:开源桌面阅读软件体验手记

三步上手跨平台电子书阅读器 Thorium Reader:开源桌面阅读软件体验手记 【免费下载链接】thorium-reader A cross platform desktop reading app, based on the Readium Desktop toolkit 项目地址: https://gitcode.com/gh_mirrors/th/thorium-reader 出差路…

📅 2026/10/28 20:12:16
如何永久保存微信聊天记录?WeChatMsg免费导出与年度报告完整指南

如何永久保存微信聊天记录?WeChatMsg免费导出与年度报告完整指南

如何永久保存微信聊天记录?WeChatMsg免费导出与年度报告完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

📅 2026/9/9 21:22:33
MORE NEWS

更多资讯

📰

Imatest图像质量分析:从ColorChecker色表到噪声与MTF的工程化诊断

简介:本资源是一份面向图像工程师、相机评测人员及摄影技术爱好者的Imatest专业图像质量分析入门教程,聚焦色彩还原、噪声控制与解像力三大核心评估维度,帮助用户科学解读测试图表、量化分析成像性能。教程详细解析ColorChecker色表&#xff…

📰

Win11+WSL2+Docker深度学习环境部署与GPU直通实践

1. 环境方案的整体设计与取舍把 WIN11WSL2Docker 深度学习环境部署 这件事拆开看,其实只有三个动作:让 Windows 把显卡和内存借出去、让 WSL2 成为一个合格的 Linux 宿主、让 Docker 在这个宿主里把框架和依赖封起来。听起来简单,但我见过太多…

📰

Flink Watermark 源码解析:窗口不触发与状态堆积排查

1. Watermark 在流处理里到底扮演什么角色先说结论:Watermark 不是"迟到数据的开关",而是一句向前推进的承诺——它告诉下游,"时间戳早于我的事件,理论上不会再来(或者来了我也不等)"。…

📰

APB总线SM4密码协处理器:即插即用国密硬件IP

简介:本资源是一份面向数字电路与密码硬件设计初学者及FPGA开发者的Verilog实践项目,聚焦APB总线协议下SM4国密算法协处理器的完整实现。资源以1个37KB的docx文档形式提供,内容涵盖APB从机接口模块(apb_slave)、顶层集…

📰

cloudflare-os 实战:Workers 边缘部署与 AI Agent 编排指南

1. 从"cloudflare-os"这个名字说起:它到底想解决什么问题第一次看到cloudflare-os这个仓库名,我脑子里冒出来的第一个念头是:Cloudflare 什么时候开始做操作系统了?点进去翻了一圈才明白,这里的 "OS&qu…

📰

企业AI落地卡在数据与知识?双治理实战路径与避坑指南

1. 为什么普通企业一提AI落地就卡在“数据”和“知识”两道坎上这两年跟不少中小企业的技术负责人聊过,发现一个特别普遍的现象:老板拍板要上大模型,IT部门兴冲冲搭了个本地推理环境,结果跑了两周就没人用了。问题出在哪&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬