年来,使用setInterval条件轮询确实很有用。无论是在客户端还是服务器端进行轮询,对特定条件做出反应都有助于改善用户体验。我最近需要完成的一项任务要求我setInterval立即执行然后继续执行。
常规和最佳方法是在调用初始`setInterval之前,我们就执行一下自定义的函数
myFunction();
setInterval ( myFunction , 1000 ) ;
如果你真的想隔离对 的函数调用setInterval,你可以使用这个返回自身的自执行函数的技巧:
setInterval ( function myFunction ( ) {
return myFunction ;
} ( ) , 3000 )
这种模式的缺点是它会导致维护问题,下一个开发人员不了解发生了什么。
维护是成为一名优秀工程师的重要组成部分,因此至少应该需要注释或辅助函数形式的文档。如果你真的想要一个自动执行的setInterval,你有它!
JS有两种定时器分别是setTimeout()和setInterval(),这两个区别就是setTimeout()是一次性的定时器,而setInterval()是循环的定时器。
js中的定时器精度并不准确,这是因为JS中的定时器仅仅是将执行的语句加入队列,这样在定时器之前的语句若是在循环或者有延迟的情况下,定时器也会相应的延后。
上面提到了js中的定时器精度不准确的原因,同样的这也会导致使用setTimeInterVal语句会卡顿,其不管语句是否执行完成,都会在时间点执行语句。
实际上大多数的场景中,只是想要定时之后执行完语句再等待定时的触发,完全可以使用setTimeOut搭配clearTimeout这样在使用定时器之后进行消除再加一个循环,总和性能比单纯的setTimeInterVal要好上不少。
由于历史原因,两种定时器都支持eval的效果,可以执行字符串形式的语句。
如果将定时为0秒后执行,语句并不会立刻执行,而是将其放在队列最后,等待所有语句执行完成之后,再立刻执行。
*请认真填写需求信息,我们会在24小时内与您取得联系。