边收集边执行,在任务完成回调之前,最多只能有两个 class Scheduler {     constructor() {         this.taskArr = []         this.count = 0     }     add(promiseCreator) {         return new Promise((resolve, reject) => {             this.taskArr.push({promiseCreator, resolve})             this.run()         })     }     run() {         if(this.taskArr.length && this.count < 2) {             this.count ++             let {promiseCreator, resolve} =  this.taskArr.shift()             Promise.resolve(promiseCreator()).then(() => {                 resolve()                 this.count --                 this.run()             })         }     } } const timeout = (time) => new Promise(resolve => {   setTimeout(resolve, time) }) const scheduler = new Scheduler() const addTask = (time, order) => {   scheduler.add(() => timeout(time))     .then(() => console.log(order)) } addTask(1000, '1') addTask(500, &(11526)#39;2') addTask(300, &(11527)#39;3') addTask(400, &(11528)#39;4')