整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

javascript定时器setInterval的基本用法

家啊可能经常在各大网站上看到这样一个功能就是跳动的时钟,一秒一秒的不停

的变化。今天这个小分享呢就给大家分享一下怎么用javascript来实现这种随处

可见的小功能

年来,使用setInterval条件轮询确实很有用。无论是在客户端还是服务器端进行轮询,对特定条件做出反应都有助于改善用户体验。我最近需要完成的一项任务要求我setInterval立即执行然后继续执行。

常规和最佳方法是在调用初始`setInterval之前,我们就执行一下自定义的函数

myFunction();
setInterval ( myFunction ,  1000 ) ;  

如果你真的想隔离对 的函数调用setInterval,你可以使用这个返回自身的自执行函数的技巧:

setInterval ( function  myFunction ( )  { 
  
  

  
  return myFunction ;


} ( ) ,  3000 )

这种模式的缺点是它会导致维护问题,下一个开发人员不了解发生了什么。

维护是成为一名优秀工程师的重要组成部分,因此至少应该需要注释或辅助函数形式的文档。如果你真的想要一个自动执行的setInterval,你有它!

etTimeout()和setInterval()

JS有两种定时器分别是setTimeout()和setInterval(),这两个区别就是setTimeout()是一次性的定时器,而setInterval()是循环的定时器。

定时器的精度

js中的定时器精度并不准确,这是因为JS中的定时器仅仅是将执行的语句加入队列,这样在定时器之前的语句若是在循环或者有延迟的情况下,定时器也会相应的延后。

对于性能的消耗

上面提到了js中的定时器精度不准确的原因,同样的这也会导致使用setTimeInterVal语句会卡顿,其不管语句是否执行完成,都会在时间点执行语句。

实际上大多数的场景中,只是想要定时之后执行完语句再等待定时的触发,完全可以使用setTimeOut搭配clearTimeout这样在使用定时器之后进行消除再加一个循环,总和性能比单纯的setTimeInterVal要好上不少。

可执行字符串形式语句

由于历史原因,两种定时器都支持eval的效果,可以执行字符串形式的语句。

若定时时间为0则放在队列最后执行

如果将定时为0秒后执行,语句并不会立刻执行,而是将其放在队列最后,等待所有语句执行完成之后,再立刻执行。