class Supervene {
constructor() {
this.queue = Promise.resolve();
}
add(task) {
this.queue = this.queue.then(() => task());
return this.queue;
}
}
function timeout(time){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve()
}, time)
})
}
const supervene = new Supervene();
function addTask(time,name){
supervene.add(()=>timeout(time)).then(()=>{
console.log(`任务${name}完成`)
})
}
addTask(10000,1);
addTask(5000,2);
addTask(3000,3);
addTask(4000,4);
addTask(5000,5);