class Scheduler { waiting = [] running = 0; add(promiseCreator) { return new Promise(resolve => { if (this.running >= 2) { this.waiting.push(promiseCreator) } else { this.running++; promiseCreator().then(() => { this.running--; if (this.waiting.length) { this.add(this.waiting.shift()) } resolve(); }) } }) } } 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, '2') addTask(300, '3') addTask(400, '4') 题目的场景是实现一个只允许同一时间内最多存在两个执行队列,期间插入的会进入等待队列,然后空闲时间执行。 只允许修改Scheduler里面的内容 现在能执行前两个task,后面两个回调没执行是什么原因