发表于: 2020-07-25 23:44:58

0 1270


(1)背景介绍:

在做项目中难免会碰到需要实时刷新,动画依次出现等等需求,这时候就需要定时器登上我们的代码舞台了,所以今天我们就先来了解一下JS定时器的设置和清除吧。


(2)知识剖析


启用定时器

window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInterval。其中前者可以使一段代码在指定时间后运行;而后者则可以使一段代码每过指定时间就运行一次。它们的原型如下:

window.setTimeout(code/function,delay);

window.setInterval(code/function,delay);

其中,code可以是用引号括起来的一段代码,也可以是一个函数名,到了指定的时间,系统便会自动调用该函数,当使用函数名作为调用句柄时,不能带有任何参数;而使用字符串时,则可以在其中写入要传递的参数。两个方法中的第二个参数是millisec,表示延时或者重复执行的毫秒数。

具体写法如下:

1.函数名,不带参数

setTimeout (test,1000);           //1秒后执行

字符串,可以执行的代码

setTimeout ('test()',1000);       //1秒后执行


2.匿名函数

setTimeout (function(){},1000);   //1秒后执行

注:setInterval的用法与setTimeout一样


3.调用函数,带参数

setTimeout ('test(参数)',1000);      //1秒后执行

注:如果不小心写成了setTimeout (test(参数),1000);test方法就会立即执行哦。


清除定时器

由于定时器在调用时,都会返回一个整形的数字,该数字代表定时器的序号,即第多少个定时器,所以定时器的清除要借助于这个返回的数字。

定时器清除的方法:clearTimeout(obj)和clearInterval(obj)。

要清除定时器,就必须在用定时器的时候,定义一个变量来记录定时器的返回值


(3)常见问题

使用了计时器后电脑卡爆了


(4)解决方案

用计时器的时候记得要关闭,释放内存,否则会一直执行,导致很卡


(5)代码实战

   详情请看视频


(6)深度思考

定时器计时一定准确码?

不一定,受电脑性能,cpu等很多因素的影响


(7)参考文献

javascript定时器,取消定时器,及js定时器优化方法

https://blog.csdn.net/johnstrive/article/details/42216005


(8)更多讨论

1、如何暂停setTimeout()、setInterval()

clearTimeout()取消由setTimeout() 方法设置的 timeout。

clearInterval() ,这个函数只有一个作用,就是暂停setInterval()调用函数。

2、弹窗会让 Chrome/Opera/Safari 内的时钟停止吗。

      在众多浏览器中,IE 和 Firefox 在显示 alert/confirm/prompt 时,内部的定时器仍旧会继续滴答,但是在 Chrome、Opera 和 Safari 中,内部的定时器会暂停/冻结。

     所以,在执行以上代码时,如果在一定时间内没有关掉 alert 弹窗,那么在你关闭弹窗后,Firefox/IE 会立即显示下一个 alert 弹窗(前提是距离上一次执行超过了 2 秒),而 Chrome/Opera/Safari 这三个则需要再等待 2 秒以上的时间才会再显示(因为在 alert 弹窗期间,定时器并没有滴答)。

3、定时器时间一定准确吗?

   都不能保证延时的准确性,受电脑性能,cpu等很多因素的影响;



返回列表 返回列表
评论

    分享到