首次执行 setInterval 函数时不会延迟
2022-08-29 23:09:40
有一种方法可以配置javascript的方法,以立即执行该方法,然后使用计时器执行setInterval
有一种方法可以配置javascript的方法,以立即执行该方法,然后使用计时器执行setInterval
最简单的方法是在第一次直接调用函数:
foo();
setInterval(foo, delay);
但是,有充分的理由避免 - 特别是在某些情况下,整个事件可以紧接着到达,没有任何延迟。另一个原因是,如果要停止循环,则必须显式调用,这意味着您必须记住从原始调用返回的句柄。setInterval
setInterval
clearInterval
setInterval
因此,另一种方法是使用以下命令为后续调用触发自身:foo
setTimeout
function foo() {
// do stuff
// ...
// and schedule a repeat
setTimeout(foo, delay);
}
// start the cycle
foo();
这保证了两次调用之间至少有一个间隔。如果需要,它还可以更轻松地取消循环 - 当达到循环终止条件时,您只是不调用。delay
setTimeout
更好的是,您可以将所有这些内容包装在一个立即调用的函数表达式中,该表达式创建函数,然后按上述方式再次调用自身,并自动启动循环:
(function foo() {
...
setTimeout(foo, delay);
})();
它定义了函数并一次性启动循环。
我不确定我是否正确地理解了你,但你可以很容易地做这样的事情:
setInterval(function hello() {
console.log('world');
return hello;
}(), 5000);
显然有很多方法可以做到这一点,但这是我能想到的最简洁的方法。