0
如果我有以下代码:javascript:如何验证计时器属性?
var myfunc = function() { alert('wow'); };
var t=setTimeout(myfunc, 300);
有什么我可以存储在t
的ID做验证计时器的持续时间和回调?我试图直接验证计时器的属性,所以我不必实际运行它,直到单元测试超时。
如果我有以下代码:javascript:如何验证计时器属性?
var myfunc = function() { alert('wow'); };
var t=setTimeout(myfunc, 300);
有什么我可以存储在t
的ID做验证计时器的持续时间和回调?我试图直接验证计时器的属性,所以我不必实际运行它,直到单元测试超时。
不行,不能做。
你可以做的反而是跟踪它们不同,这样的事情:
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);
}
返回的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);