Ajax并发请求控制
前言
https://github.com/yuanhaovvv/wechat-article
题目:
Ajax并发请求控制,有100个请求,最大并发数为5,每一条请求成功后,继续请求,直到请求完所有,先不考虑失败的场景!
思路:
看到异步,首先想到Promise.then 完成后继续调用,继续调用,嗯,递归跑不掉了,那如何知道请求了多少条呢?还需要个成功的计时器,ok,开搞
function multiRequest(urls, maxNum = 5) {
let len = urls.length,
// 成功条数
completeCount = 0,
// 成功结果
result = [];
// 先发送5条
while(complete < maxnum) {
next()
}
function next() {
// 关键 完成数
let count = complateCount++
request(urls[count]).then(resolve => {
if (completeCount < len) {
result[count] = resolve
// 每次成功继续调用
next()
}
}).catch(reject => {
// 错误情况
})
}
}
demo在仓库中,大家有兴趣可以看下,也可施舍个star~~
https://github.com/yuanhaovvv/wechat-article
如果你觉得我写的有用,麻烦大家给个关注和赞,定期写源码相关的东西,提升自己,帮助大家。
“ 努力、加油! ”