定时器setTimeout和setInterval

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来检测函数的参数个数

你可能感兴趣的:(定时器setTimeout和setInterval)