2010-08-12 60 views
0

如果我有以下代码:javascript:如何验证计时器属性?

var myfunc = function() { alert('wow'); }; 
var t=setTimeout(myfunc, 300); 

有什么我可以存储在t的ID做验证计时器的持续时间和回调?我试图直接验证计时器的属性,所以我不必实际运行它,直到单元测试超时。

回答

1

不行,不能做。

你可以做的反而是跟踪它们不同,这样的事情:

var timeouts = [{ 
    fn: myfunc, 
    timeout: 300 
}]; 

for(var i = 0; i < timeouts.length; i++){ 
    timeouts[i].id = window.setTimeout(timeouts[i].fn, timeouts[i].timeout); 
} 
0

返回的ID是内部的浏览器,所以你不能做它。但因为你知道时间和回调,当你启动计时器,你也可以同样包裹了整个事情的Timer的类,它为你的一切:

function Timer(callback, timeout) { 
    this.callback = callback; 
    this.timeout = timeout; 
    this.id = window.setTimeout(callback, timeout); 
} 

Timer.prototype.cancel = function() { 
    window.clearTimeout(this.id); 
} 

Timer.prototype.fire = function() { 
    this.cancel(); 
    this.callback(); 
} 

然后你只需创建定时器并访问像它们的属性这个:

t = new Timer(myfunc, 300); 
alert(t.timeout);