在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