class Scheduler { constructor() { this.queue = []; this.curQue = 0; } add(promiseCreator) { let resolve; const promise = new Promise(res => { resolve = res; }); promise.resolve = resolve; this.queue.push({ promiseCreator, promise }); this.doTask(); return promise; } doTask() { if (this.queue.length == 0) return; if (this.curQue < 2) { this.curQue++; const obj = this.queue.shift(); const { promiseCreator, promise } = obj; promiseCreator().then(() => { promise.resolve(); this.curQue--; this.doTask(); }); } } } 感觉我这个比较好理解