I\'m trying to provide a pause and resume functionality to a loop with recursive calls. I\'m using \"setTimeout\" and \"clearTimeout\" functions for this...
When a u
Back in 2012 I wrote a snippet of code for delta timing in JavaScript, which uses setTimeout and has start and stop functions: https://gist.github.com/aaditmshah/2056987
See the demo:
var button = document.querySelector("button");
var div = document.querySelector("div");
var running = false;
var number = 1;
var timer = new DeltaTimer(function () {
div.innerHTML = number++;
}, 1000);
button.addEventListener("click", function () {
if (running) {
timer.stop();
button.innerHTML = "Start";
running = false;
} else {
timer.start();
button.innerHTML = "Stop";
running = true;
}
});
function DeltaTimer(render, interval) {
var timeout;
var lastTime;
this.start = start;
this.stop = stop;
function start() {
timeout = setTimeout(loop, 0);
lastTime = Date.now();
return lastTime;
}
function stop() {
clearTimeout(timeout);
return lastTime;
}
function loop() {
var thisTime = Date.now();
var deltaTime = thisTime - lastTime;
var delay = Math.max(interval - deltaTime, 0);
timeout = setTimeout(loop, delay);
lastTime = thisTime + delay;
render(thisTime);
}
}
Hope that helps.