在JavaScript中使用0毫秒的setInterval()行为
在我的应用程序中,我发现一些使用setInterval
JavaScript代码的时间为0毫秒,如下所示:
self.setInterval("myFunction()",0);
显然,这对我来说不是一个好主意。 任何人都可以告诉我这里setInterval
的行为是什么? (“myFunction”对服务器进行AJAX调用)
我问这是因为我的应用程序中有一个不规则的行为。 90%的时间,应用程序的行为是正确的,只有一次调用服务器。 然而有时,服务器会进行多次调用(直到现在,最多是48个调用),而且我几乎可以肯定这是这行代码的错误。
浏览器为间隔设置一个最小值。 Usualy 10ms,但它可以依靠浏览器。 这意味着重复这个尽可能快我可能被允许。 W3C规范说4ms: http : //www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#timers
这是正确的,但可能会显示devise错误。
编辑:顺便说一句,这是不好的做法传递一个stringsetTimeout / setInterval,而是传递一个函数,因为JavaScript具有一stream的function。
setInterval(myFunction, 0)
以最小延迟连续调用myFunction
。 这几乎就像在无限循环中调用myFunction
一样。 除此之外,您可以使用clearInterval
方法停止循环。
要稍微延迟一次执行它,请改用setTimeOut
:
window.setTimeout(myFunction, 10);
在使用AJAX时,您不必使用任何定时器,只需在当前AJAX请求的callback(完成/成功事件)中调用下一个AJAX请求即可。
发布您的当前代码,我们可能能够进一步指导您。
我假设在myFunction()
有一个clearInterval
。
基本上,你已经设置了一个可以经常发生的时间间隔。 如果执行JavaScript的浏览器实际上在间隔的下一次迭代之前到达clearInterval
部分,那么它将会很好。 否则,它会一次又一次地发生。
改用setTimeout
。