Skip to content

Instantly share code, notes, and snippets.

@ncou
Forked from jasdeepkhalsa/interval.js
Created April 17, 2016 21:38
Show Gist options
  • Save ncou/3a0a1f89c8e22416d0d607f621a948a9 to your computer and use it in GitHub Desktop.
Save ncou/3a0a1f89c8e22416d0d607f621a948a9 to your computer and use it in GitHub Desktop.
setTimeout and setInterval with pause and resume
// http://stackoverflow.com/questions/7279567/how-do-i-pause-a-window-setinterval-in-javascript
function RecurringTimer(callback, delay) {
var timerId, start, remaining = delay;
this.pause = function() {
window.clearTimeout(timerId);
remaining -= new Date() - start;
};
var resume = function() {
start = new Date();
timerId = window.setTimeout(function() {
remaining = delay;
resume();
callback();
}, remaining);
};
this.resume = resume;
this.resume();
}
function Timer(callback, delay) {
var timerId, start, remaining = delay;
this.pause = function() {
window.clearTimeout(timerId);
remaining -= new Date() - start;
};
this.resume = function() {
start = new Date();
window.clearTimeout(timerId);
timerId = window.setTimeout(callback, remaining);
};
this.resume();
}
var timer = new Timer(function() {
alert("Done!");
}, 1000);
timer.pause();
// Do some stuff...
timer.resume();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment