第一次执行setInterval函数而不会延迟

有一种方法可以配置setIntervaljavascript方法以立即执行该方法,然后使用计时器执行

回答:

第一次直接直接调用函数是最简单的:

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函数而不会延迟 的全部内容, 来源链接: utcz.com/qa/436225.html

回到顶部