概述
对于存在有请求数限制的需求,如小程序刚发布时的5并发、后面的10并发,我们需要进行封装,通过传入所有请求最后能高效便捷控制请求数并返回所有的结果。
实现
主要的思路:通过控制当前运行的请求数最大为限制数,直至队列中所有请求完成
封装一个TasksHandle类,传入异步任务数组、最大限制长度、以及最终结果的回调函数。将所有请求存入待执行队列,通过递归的形式取出请求,并实时控制当前请求的个数,将结果存入数组,当所有请求完成触发回调函数。
class TasksHandle {
queue = [] //所有待执行任务队列
result = [] //存储结果的数组
runningNum = 0; //正在运行的个数
//tasks:任务,maxLen:限制请求数
constructor(tasks, maxLen, callback) {
this.tasks = tasks
this.maxLen = maxLen
this.callback = callback
this.preStart()
}
//运行前函数:将所有任务加入队列
preStart = (