async function delay(wait) {
return new Promise((res) => {
setTimeout(() => res(), wait);
});
};
function Queue() {
this.tasks = [];
};
Queue.prototype.task = function(wait, callback) {
this.tasks.push([wait, callback]);
return this;
};
Queue.prototype.start = async function() {
let Q = Promise.resolve();
for (let task of this.tasks) {
Q = Q.then(()=>delay(task[0])).then(()=>task[1]());
}
};
new Queue()
.task(1000, () => {
console.log(1);
})
.task(1000, () => {
console.log(2);
})
.task(1000, () => {
console.log(3);
})
.start();
console