一个问题.如果我以这种方式使用setInterval:
setInterval('doSome();',60000);
Run Code Online (Sandbox Code Playgroud)
我是否安全doSome()
,即使我在浏览器中更改了标签,该功能每60秒触发一次?
Del*_*ani 29
传递字符串setInterval
很好,是两种使用方法之一setInterval
,另一种是传递函数指针.它在任何方面都没有错,就像其他答案状态一样,但它没有那么高效(因为代码必须被重新解析),也不是为了你的目的.都
setInterval('doSome();', 60000); // this runs doSome from the global scope
// in the global scope
Run Code Online (Sandbox Code Playgroud)
和
setInterval(doSome, 60000); // this runs doSome from the local scope
// in the global scope
Run Code Online (Sandbox Code Playgroud)
是正确的,尽管它们的含义略有不同.如果doSome
某个非全局范围是本地的,则在同一范围内调用后者将以doSome
60000ms的间隔运行本地.调用前一个代码将始终doSome
在全局范围内查找,如果doSome
全局范围内没有函数,则将失败.
无论标签焦点如何,都会以至少 60000ms的间隔可靠地触发该功能,但由于开销和延迟,通常会略微更多.
所有浏览器都会将间隔值钳制到至少一定的值,以避免间隔太频繁(我认为它至少是10毫秒或4毫秒或其他东西,我不能完全记住).
请注意,某些浏览器(即将推出的Firefox 5是一个,但可能还有其他我不知道的)setInterval
如果选项卡没有聚焦,则会进一步大幅缩放到1000毫秒.(参考)
归档时间: |
|
查看次数: |
25177 次 |
最近记录: |