javascript检查setTimeout正在运行

时间:2014-01-14 07:11:07

标签: javascript settimeout

function TimerSystem() {
    this.timer = null;

    this.addTimer = function(timer, delay) {
        this.timer = timer;

        setTimeout(function() {
            timerSystem.timer = null;
        }, delay);
    };
}
var timerSystem = new TimerSystem();


timerSystem.addTimer(setTimeout(function() {
            //do something...
        }, 1000), 1000);

它正在我的源头工作。 让我知道这种方式是对的吗? 我认为这不是聪明的

1 个答案:

答案 0 :(得分:0)

记住timeoutId,并在计时器功能失效时将其设置为null,如下所示:

function schedule(func, millsecs) {

    var timeId = setTimeout(function() {

        //the function runed, clear this timeId
        timeId = null;

        func();

    }, millsecs);

    return {

        isrunning : function() {

            return timeId != null;
        }
    };
}

var sinfo = schedule(function() {

    console.log('done');

}, 500);

console.log('just now', sinfo.isrunning());

http://jsfiddle.net/rooseve/AVna6/1/

此外,为什么你需要“检查setTimeout是否正在运行”?