当前位置: 首页 > 面试题库 >

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

白芷阳
2023-03-14
问题内容

有一种方法可以配置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);
})();

定义功能并一次性开始循环。



 类似资料:
  • 我在useEffect钩子中运行setInterval来循环函数,但是,我希望在应用延迟(interval)之前能够先运行该函数一次。在应用延迟之前,是否有一种方法可以在useEffect钩子中运行该函数一次? 在setInterval函数之前,我曾尝试在钩子中运行该函数一次,但它没有给我希望的结果。在useEffect挂钩之外运行函数也是如此。 我希望在setInterval的延迟开始之前运行一

  • fileInput包含一个大约30行的csv文件,我只想访问第二行。 我需要访问第二行而不是第一行(第一行包含列名称)<代码>行[1]给出了

  • 我需要在我的服务器上运行函数 但是由于安全原因被禁用,但是PHP执行函数正在运行和。 是否可以使用php函数执行相同的操作? 禁用功能 链接,符号链接,执行,通过,proc_close,proc_get_status,proc_open,shell_exec,系统,流行,关闭

  • vue2开发 需求是没间隔多上时间请获取一次token、token是10分钟有效、我需要在7分钟的时候刷新一次token、然后我使用的是setInterval()方法 没7分钟请求一次, 但是出现的问题是、页面刷线以后setInterval()方法又重新执行了一次、导致没有正常刷新token 如何解决setInterval页面刷新以后不再重新执行 或者利用其他方法

  • 如果我在maven deploy插件中调用两个部署文件执行 然后,第一次执行的javadoc上传也在第二次执行中执行(查找basis-vs-bo-20.0.2-20161103.130940-25-javadoc.jar): 为什么参数javadoc会导致第二次执行再次上载同一个文件?