JSFiddle - React, Tailwind, and code Playground

by mVChr

HTML

<h1>autocorrecting setInteval</h1>
<br>
<div>Error:</div>
<ul id="results"></ul>

JavaScript

var start, tick = 0;
var f = function() {
    if (!start) start = new Date().getTime();
    var now = new Date().getTime();
    if (now < start + tick*1000) {
        setTimeout(f, 0);
    } else {
        tick++;
        var diff = now - start;
        var drift = diff % 1000;
        $('<li>').text(drift + "ms").appendTo('#results');
        setTimeout(f, 990);
    }
};

setTimeout(f, 990);