Skip to content

Instantly share code, notes, and snippets.

@andris9
Created September 28, 2016 09:46
Show Gist options
  • Save andris9/c4144b0eaecd013fb9fbba959d7331e7 to your computer and use it in GitHub Desktop.
Save andris9/c4144b0eaecd013fb9fbba959d7331e7 to your computer and use it in GitHub Desktop.
tick on every 50ms
<script>
let myWorker = new Worker('worker.js');
let prev = Date.now();
myWorker.onmessage = function(e) {
let now = Date.now();
console.log(now - prev);
prev = now;
}
</script>
const TICK_INTERVAL = 50;
const START_TIME = performance.now();
let expecting = 0;
let ticker = () => {
while (true) {
let curtime = performance.now();
if (curtime >= expecting) {
expecting = (Math.floor((curtime - START_TIME) / TICK_INTERVAL) + 1) * TICK_INTERVAL + START_TIME;
postMessage(1);
return setTimeout(ticker, TICK_INTERVAL / 8 * 7);
}
}
};
ticker();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment