我原来的问题是关于一段与此类似的代码:
delayTime = 1000;
reducedDelay = 0;
setInterval(
function(){
//Code which calculates reduced delay
reducedDelay = /* -- Any integer -- */;
delayTime = 1000 - reducedDelay;
},delayTime)
delayTime
是一个全局范围变量,因此根据我的理解,delayTime
将由表达式delayTime = 1000 - reducedDelay;
更新,因此setInterval
将再次调用该函数更新delayTime
延迟......对吗?
这只是一次使用,但我无法找到实际检查setInterval()
或setTimeout()
延迟的方法。如何检查delayTime
(第二个参数)?
更好地表达它的方式:如何检查setTimeout()
或setInterval('param 1', 'param 2')
< - '参数2'是延迟,如何检查setInterval
是否为实际上正确执行? (即,在正确的时间推迟下一次'param 1'调用。)
答案 0 :(得分:0)
当您致电setInterval
时,您发送的是值,而不是变量引用。所以在你打电话之后,如果你改变它并不重要
但回答有关如何检查的问题,您无法获得正在使用的价值,但您可以对其进行衡量。
reduce = 5000;
lastCall = (new Date()).getTime();
setInterval(function(){
reduce-=1000;
console.log("New reduce value : "+reduce);
newTime = (new Date()).getTime();
console.log("Time since last call : "+(newTime - lastCall));
lastCall = newTime;
},reduce);
您可以将此代码复制粘贴到此页面的控制台中进行测试。 ;)
顺便说一句,如果你想让你的代码工作,你可以对setTimeout
进行递归调用。那就行了。