背景:页面中需要同时发送10个请求,但是服务器限制,需要前端控制并发数,保证每次只能发送2个,直至所有请求全部发送完毕。
1、可以使用 async-pool 组件库
2、如若自己实现,思路:每次发送2条请求,请求成功则从请求队列中取一个,请求失败则再放入请求队列等待再次请求。
具体代码如下:
const reqQueue = [1,2,3,4,5,6,7,8,9,10]; // 请求队列
const handleRequest = (queue, callback) => {
const result = []; // 请求结果
let ajaxNum = 0; // 请求并发 计数器
const length = queue.length; // 请求总数
const newPromise = (id) => {
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve(`${id}的结果`);
}, 1000);
})
}
const newPromiseAll = (queue) => { // 封装控制并发函数
while (ajaxNum < 2 && queue.length > 0)