Skip to content

028.async-concurrent-scheduler #28

Open
@mewcoder

Description

@mewcoder

实现一个带并发限制的异步调度器,保证同时运行的任务最多有两个。

完善下面代码中的 Scheduler 类,使得以下程序能正确输出。

// 实现
class Scheduler {
  constructor() {
    this._max = 2;
  }
  // ...
}

// 测试
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');

// 期望输出: 2 3 1 4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions