学习资源#
并发请求 【渡一教育】
完整代码#
function concurRequest(urls, maxNum) {
if (urls.length === 0) {
return Promise.resolve([]);
}
return new Promise((resolve) => {
let nextIndex = 0;
let finishCount = 0;
const result = [];
async function _request() {
if (nextIndex >= urls.length) {
return;
}
const i = nextIndex;
const url = urls[nextIndex++];
const resp = await fetch(url);
result[i] = resp;
finishCount++;
if (finishCount === urls.length) {
resolve(result);
}
_request();
}
for (let i = 0; i < Math.min(maxNum, urls.length); i++) {
_request();
}
})
}
知识详解#
-
使用场景:大文件上传,分片后通过控制并发数上传。
-
编写思路:
-
判断边界条件(看需要请求urls是否为空数组)
-
返回一个Promise结果
-
确定运行逻辑。
-
获取url进行请求。

⚠️注意:当前代码只适用于get请求,若为post请求需要加入请求配置。
-
得到请求结果塞入结果数组。

⚠️注意:不能使用push添加请求结果。——因为请求顺序不一定等于返回顺序。
-
待请求列表补位请求。(保证带宽是满的)

-
所有请求结束处理。

-
并发控制

⚠️注意:不能使用awit,否则成为串行,无法实现并发请求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现