封装一个方法,会有 10 个请求在发送,但是只允许 3 个请求同时向后端发送,剩下的等待,怎么解决呢?

封装一个方法,会有 10 个请求在发送,但是只允许 3 个请求同时向后端发送,剩下的等待,3 个请求中有一个返回成功, 在从剩余的 7 个请求中陆续的向后端进行发送 这个怎么解决呢

回答·7
最热
最新
  • 手写 promise.race    function promiseAll(promises) {             if (!Array.isArray(promises)) {                 throw new Error("promises must be an array")             }             return new Promise(function (resolve, reject) {                 let promsieNum = promises.length;                 let resolvedCount = 0;                 let resolveValues = new Array(promsieNum);                 for (let i = 0; i < promsieNum; i++) {                     Promise.resolve(promises[i].then(function (value) {                         resolveValues[i] = value;                         resolvedCount++;                         if (resolvedCount === promsieNum) {                             return resolve(resolveValues)                         }                     }, function (reason) {                         return reject(reason);                     }))                 }             })         }
  • 小学生的题  三个请求放数组  循环发出去  异步会并发 结束后去队列取新的
  • asyic  await 可以尝试一下
  • 结合 Promise.race 或者 Promise.any 去设计一下
  • 使用数组将所有请求函数装进去,首次 for 循环三次,执行里面的前三个请求函数,执行一次数组 shift 一次,函数执行完接收到数据或者失败一次就从数组里面继续拿请求函数执行,反复操作直到数组为空
  • 先 promise all 三个请求,返回后再重复继续剩下的请求
  • 封装一个数组,定义一个要请求标识索引,根据传参自定义每次能发几个请求,当有一个请求返回,无论错误成功,那么三个这个传的参数+1,这样就能保证每次最多发送三个请求