# 实现调度器 Scheduler

Scheduler 源码

# 代码实现

class Scheduler {
  constructor() {
    this.task = []
    this.curringRuning = 0
  }

  add(promiseCreator) {
    return new Promise((resolve, reject) => {
      this.task.push(() => promiseCreator().then(() => resolve()))
      // 控制最多执行两个
      if (this.curringRuning < 2) this.doTask()
    })
  }

  doTask() {
    if (this.task.length > 0) {
      const runTask = this.task.shift()
      this.curringRuning++
      runTask().then(() => { // 完成 1 个后,开始下一个,保证最多执行 2 个
        this.curringRuning--
        this.doTask()
      })
    }
  }
}

# 参考: