JSFiddle - React, Tailwind, and code Playground
by Ved prakash
JavaScript
function printQueue(date,str) {
this.queue = this.queue?this.queue:[];
this.enqueue = function () {
this.length = this.queue.push({
delay: date,
msg: str
});
this.queue.sort(function(a,b){
return a.delay-b.delay;
});
};
this.enqueue();
this.dequeue = function () {
var first = this.queue[0];
var delay = first.delay - new Date().getTime();
setTimeout(this.printMsg.bind(this,first.msg), delay);
};
this.printMsg = function (msg){
console.log(msg,"msg");
this.queue.shift();
if (this.queue.length){
this.dequeue();
}
};
if(this.length ===1){
this.dequeue();
}
}
var now = new Date().getTime();
printQueue(new Date(now + 5000),'5000 milliseconds passed');
printQueue(new Date(now + 8000), '8000 milliseconds passed');
printQueue(new Date(now + 6000),'6000 milliseconds passed"');
printQueue(new Date(now + 7000),'7000 milliseconds passed"');