JSFiddle - React, Tailwind, and code Playground

JavaScript

function over (duration, fx) {
    var end = new Date().getTime() + duration;

    (function loop () {
      var now = new Date().getTime(),
          delta = end - now;
      
      fx(delta);
    
    	if (now < end) {
    		window.requestAnimationFrame(loop);  
      }
    
    })();
}
console.log('start');
over(1000, function(delta){ console.log(delta); });
console.log('end');