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&quot');
printQueue(new Date(now + 7000),'7000 milliseconds passed&quot');