如何限制 Ajax 并发请求数量避免浏览器卡死?
我正在做一个图片上传功能,用户一次能选几十张图,我用 Promise.all 发起并发请求,结果浏览器直接卡住了,甚至有些请求失败了。试过自己写队列控制,但逻辑太乱没搞定。
是不是应该限制同时进行的请求数量?比如最多只允许 3 个请求同时跑?有没有简单又靠谱的做法?
.upload-item {
width: 100px;
height: 100px;
border: 1px dashed #ccc;
display: inline-block;
margin: 5px;
}
.uploading {
opacity: 0.6;
}
前端这块做并发控制,核心思路就是搞个"调度器",维护一个等待队列,同时跑的请求不超过你设定的阈值。
给你写个简单实用的并发控制类:
使用的时候也很简单,假设你有个上传函数
uploadFile:这样不管用户选多少张图,同时跑的请求永远只有 3 个,一个完成了才会从队列里拉下一个出来执行。浏览器压力小了,页面也不卡了,请求成功率也上去了。
并发数设多少合适?一般 3 到 5 个就够用了,太大意义不大,还可能被后端限流或者触发 429。