SetTimeout或SetInterval延迟检查

时间:2017-02-08 23:55:36

标签: javascript

我原来的问题是关于一段与此类似的代码:

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'调用。)

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进行递归调用。那就行了。