js计时器有下面两种方法:
- setTimeout()
- setInterval()
setTimeout()和setInterval()经常被用来处理延时和定时任务。
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式(即只执行一次),而setInterval()则可以在每隔指定的毫秒数循环调用函数或表达式(以指定时间为周期循环执行),直到clearInterval()把它清除。
基于两种方法的特点:
一般情况下setTimeout()用于延迟执行某方法或功能,
setInterval()则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步
当然setTimeout()也可以实现setInterval()的功能,如下:
setTimeout(function () {
//code
setTimeout(arguments.callee, interval);//使用了agrument.callee 来获取当前实行函数的引用
}, interval)
原理:
将setTimeout包含于被执行函数中,然后在函数外再次使用setTimeout来达到定时执行的目的,这样,函数外的setTimeout在执行函数时再次触发setTimeout从而形成周而复始的定时效果。
在此处用到arguments的callee属性,这个属性是一个指针,指向拥有这个arguments对象的函数,即这个匿名函数。
关于arguments:函数内部有一个特殊对象arguments
- arguments用来记录函数的参数,比如函数 pattern()中,第一个参数是 message。用 arguments[0] 可以访问这个值,即第一个参数的值,第二个参数以此类推。
- 还可以用arguments.length来检测函数的参数个数