JSFiddle - React, Tailwind, and code Playground

JavaScript

(function(){
    var start = null;

    var checkTicks = function(){
        start = new Date();         // SETA start COM DATA CORRENTE
        setTimeout(showDiff, 1000); // DEFINE FUNÇÃO A SER EXECUTADA APOS 1s
        loop();                     // CHAMADO DE LOOP QUE DEVE DEMORAR 5s
    }

    var loop = function(){
        var stop = false;
        while(!stop){
            var current = new Date();
            if(betweenDates(current, start) > 5){ // SO PARA APOS DIFF DE 5s
                stop = true;
            }
        }
    }

    var showDiff = function(){
        var current = new Date();
        console.log(betweenDates(current, start)); // EXIBE DIFERENCA ENTRE start E current
    }

    checkTicks(); // INICIO O PROCESSO
})();

function betweenDates(d1, d2) {
    return (d1.getTime() - d2.getTime()) / 1000;
}