网络一般可同时发送5~7个网络请求, 但我们一般并发请求数为4个, 需要留1个以上去请求js css 或 图片之类的数据, 避免页面白屏时间过长.
封装并发管控函数, 写入 ajaxContral.js 文件
export async function asyncPool (poolLimit, array, iteratorFn) {
const ret = []
const executing = []
for (const item of array) {
const p = Promise.resolve().then(() => iteratorFn(item, array))
ret.push(p)
if (poolLimit <= array.length) {
const e = p.then(() => executing.splice(executing.indexOf(e), 1))
executing.push(e)
if (executing.length >= poolLimit) {
await Promise.race(executing)
}
}
}
return Promise.all(ret)
}