声明一个队列用来装超过个数的方法,当正在执行的count 比max大时,多余的方法装进队列中,每次执行完方法之后检查队列是否为空,不为空则调用第一个方法
```class scheduler{
constructor(max){
this.max=max
this.count=0
this.queue=[]
}
async add(fn){
if(this.count>=this.max)
{
await new promise((resolve)=>{this.queue.push(resolve())})
}
this.count++
const res=await fn()
this.count--
this.queue.length&&this.queue.shift()()
return res
}
}