2015年6月9日 星期二

時間生命週期維持器

摁,名子聽起來很酷,實際上只是讓timer可以增加時間而已。

github: https://github.com/hpcslag/newTimer.js

程式碼:
function Timer(callback, time) {
    this.setTimeout(callback, time);
}

Timer.prototype.setTimeout = function(callback, time) {
    var self = this;
    if(this.timer) {
        clearTimeout(this.timer);
    }
    this.finished = false;
    this.callback = callback;
    this.time = time;
    this.timer = setTimeout(function() {
         self.finished = true;
        callback();
    }, time);
    this.start = Date.now();
}

Timer.prototype.add = function(time) {
   if(!this.finished) {
       // add time to time left
       time = this.time - (Date.now() - this.start) + time;
       this.setTimeout(this.callback, time);
   }
}

module.exports = Timer;

實際套用:
var Timer = require('./timer.js');
var timer = new Timer(function() { // init timer with defalut(0) seconds
    console.log("FOO");
}, 0);
timer.add(1000);

實際上,就算timer設定為0, 後續有增加時間,timer還是會受到影響。
這樣的腳本實際就可以操作有時間生命週期這種規則的程式。

沒有留言:

張貼留言

© ERIC RILEY , 自由無須告知轉貼
Background Japanese Sayagata by Olga Libby