感觉你逻辑挺合理的,好像只能写个工具方法重构一下
```
// 一个 task 包含多个异步 job
// 每个 job 运行前需要校验当前 task 是否在运行
// 运行新 task 时取消之前的 task
const createScheduler = (jobs) => {
let runningTask = 0;
const run = async () => {
runningTask += 1;
const thisTask = runningTask;
for (let job of jobs) {
if (thisTask === runningTask) {
await job();
} else {
return;
}
}
};
return run;
};
const init = createScheduler([
() => sleep(500),
() => sleep(500),
() => sleep(500)
]);
``` |