PausableTimeout
クラスを追加するのはそれほど難しくありません:
(有効な JS ではないかもしれませんが、動作させるのは難しくありません):
function PausableTimeout(func, millisec) {
this.func = func;
this.stTime = new Date().valueOf();
this.timeout = setTimeout(func, millisec);
this.timeLeft = millisec;
}
function PausableTimer_pause() {
clearTimeout(self.timeout);
var timeRan = new Date().valueOf()-this.stTime;
this.timeLeft -= timeRan;
}
function PausableTimer_unpause() {
this.timeout = setTimeout(this.func, this.timeLeft);
this.stTime = new Date().valueOf();
}
PausableTimer.prototype.pause = PausableTimer_pause;
PausableTimer.prototype.unpause = PausableTimer_unpause;
//Usage:
myTimer = new PausableTimer(function(){alert("It works!");}, 2000);
myTimer.pause();
myTimer.unpause();
もちろん、そこにいくつかのエラー チェックを追加することは素晴らしい考えです (タイムアウトの一時停止を何度も解除して、何百ものタイムアウトになる可能性を望まないでください!)。仕事:P