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);