class Scheduler {
constructor(limit) {
this.limit = limit;
this.queue = [];
this.number = 0;
}
addTask(time, output) {
this.queue.push([time, output]);
}
start() {
for (let i = 0; i < this.limit; i++) {
const task = this.queue.shift();
task && this.dispatchTask(task);
}
}
continueNext() {
const task = this.queue.shift();
task && this.dispatchTask(task);
}
getNumber() {
console.log('正在进行的number:', this.number);
}
dispatchTask(task) {
this.number++;
const [time, output] = task;
setTimeout(() => {
this.number--;
console.log(output);
this.continueNext();
}, time * 1000)
}
}
const scheduler = new Scheduler(2)
scheduler.addTask(1, '1');
scheduler.addTask(1, '2');
scheduler.addTask(1, '3');
scheduler.addTask(1, '4');
scheduler.addTask(10, '5');
scheduler.addTask(1, '6');
scheduler.start();
console