定时器 setTimeout、setInterval
定时器的使用方法
- setTimeout(fn,1000) : 1s后执行fn函数(仅一次,不会循环触发);
- setInterval(fn,1000) : 1s执行一次fn函数(循环触发);
二者用法相同,只是前者只执行一次,后者会无限循环。
传递参数
一般情况下,我们不能直接在定时器中直接传参,不然函数就会自执行,不在是一个函数。
- setInterval(“fn(a)”,1000):将要传参的函数用 “ ” 包裹,定时器会自动识别字符串并执行里面的函数。
注意:有作用域问题,如果加引号,fn函数必须定义在window.onload之外,否则setInterval(“fn(a)”,1000); fn是not defined。 - setTimeout(function(){ fn(a);fn1(b); },1000):将要函数用匿名函数function(){ }包裹,这种方法可以同时执行多个函数。
- setTimeout(eval(“fn()”),1000):eval方法会把里边的字符串变成可执行的代码。
清除定时器
一般页面上的定时器执行完记得都要清除
- clearTimeout(timer)
- clearInterval(timer)
在清除定时器前,我们需要先给定时器一个名字才能清除;如我们要先 var timer = setTimeout(fn(),1000);然后我们才能使用 clearTimeout(timer);清除。
HTML5下 的requestAnimationFrame函数
requestAnimationFrame函数是针对动画效果的API,在浏览器中优化并行的动画动作。它的作用与定时器类似,但是它的间隔时间为浏览器本身的间隔时间。兼容主流浏览器,但是不兼容IE8以下。
- requestAnimationFrame(fn): 一定间隔之后执行fn函数
- cancelAnimationFrame(timer) : 取消动画帧请求,也要提前给名字
网友评论