三面promise的题,我有遇到过类似的实现并发控制器的,不知道和楼主的是不是同一题,在这里分享下思路: class Scheduler{     constructor(){         this.taskNum = 0;         this.taskQueue = [];     }     async add(promiseCreator){         //在Promise内部把resolve放到任务队列中,只有当resolve被调用,后面的的代码才被执行         if(this.taskNum>=2){             await new Promise((resolve)=>{                 this.taskQueue.push(resolve)             })         }         this.taskNum++;         let result = await promiseCreator();         this.taskNum--;         if(this.taskQueue.length>0){         //当前任务完成后,如果任务队列里有resolve,那么就调用resolve,之前被堵住的部分就可以得到执行             this.taskQueue.shift()();         }         return result;     } } let scheduler = new Scheduler(); let timeout = time => new Promise((resolve)=>{     setTimeout(resolve, time); }); function addTask(delay, num){     scheduler.add(()=>(         timeout(delay).then((val)=>{             console.log(num);         })     )) } addTask(1000, '1'); addTask(500, &(11526)#39;2'); addTask(300, &(11527)#39;3'); addTask(400, &(11528)#39;4');