使用Promise.all实现限制并发请求函数

Promise.all 的简单解释:
// 当以下数组中promise1, promise2, promise3都resolve之后,触发promise.all的then函数。
Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});



需求解释
所谓并发请求,即有待请求接口100个,限制每次只能发出10个。即同一时刻最多有10个正在发送的请求。

每当10个之中有一个请求完成,则从待请求的接口中再取出一个发出。保证当前并发度仍旧为10。

直至最终请求完成。

设计思路
简单思路如下:(假设并发请求函数名字为limitedRequest)

设定一个数组(命名为:pool),用于后续Promise.all的使用
当limitedRequest被调用的时候,首先一次性发出10个请求,并放入到pool中
每一个请求完成后的回调函数中继续触发下一个请求,而下一个请求返回Promise,他的回调函数继续绑定同样的回调函数,即循环调用。(看不懂就直接看代码更易懂)
直到全部请求完成,停止。
代码实现
具体代码如下

// 模仿一个fetch的异步函数,返回promise
function mockFetch(param) {
  return new Promise((resovle) => {
    setTimeout

你可能感兴趣的:(前端,后端,javascript,vue.js,开发语言)