vlambda博客
学习文章列表

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


如果你觉得我写的有用,麻烦大家给个关注和赞,定期写源码相关的东西,提升自己,帮助大家。


    “  努力、加油!  ”