5 ms·
Styling I understand but to tick the clock when time actually has changed you need to use animation frames APIs and check for clock change more often than "ever
by msoad 2y ago
Styling I understand but to tick the clock when time actually has changed you need to use animation frames APIs and check for clock change more often than "every 1000 ms" because setTimeout will eventually drift even if you start exactly on first second time change. This is a test for depth of knowledge of a programmer I used to use in the past in interviews.
- SeanAnderson 2y agoThis is platform-specific, right? Chromium corrects for drift (https://source.chromium.org/chromium/chromium/src/+/main:third_party/WebKit/Source/platform/Timer.cpp;drc=e6d900fb6ed08dbd3a048899f38962ee75f4d8d0;l=162 https://source.chromium.org/chromium/chromium/src/+/main:thi...)
- msoad 2y agoI wish that was true but you can easily see it drifting in Chrome let lastms function tick() { if (lastms === undefined) lastms = new Date().getMilliseconds() else if (lastms !== new Date().getMilliseconds()) throw new Error('Drifted') } setInterval(tick, 1000)
- deleted 2y ago[deleted]
- realharo 2y agoIt's only drift if the error grows over time. You need to look at the sum of the offsets.
- deleted 2y ago[deleted]