有一种方法可以配置setInterval
javascript的方法立即执行该方法,然后用定时器执行
最简单的方法是第一次直接调用该函数:
foo();
setInterval(foo, delay);
然而,有充分的理由避免setInterval
- 特别是在某些情况下,整个负载setInterval
事件可以立即相继到达,没有任何延迟。另一个原因是,如果你想停止循环,你必须显式调用clearInterval
这意味着你必须记住从原始返回的句柄setInterval
call.
所以另一种方法是foo
使用以下方式触发自身以进行后续调用setTimeout
反而:
function foo() {
// do stuff
// ...
// and schedule a repeat
setTimeout(foo, delay);
}
// start the cycle
foo();
这保证了有at least的间隔delay
通话之间。如果需要的话,它还可以更轻松地取消循环 - 您只需不调用setTimeout
当达到循环终止条件时。
更好的是,您可以将这一切包装在一个立即调用函数表达式它创建了该函数,然后如上所述再次调用自身,并自动启动循环:
(function foo() {
...
setTimeout(foo, delay);
})();
它一次性定义了函数并启动了循环。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)