setTimeout和setInterval解析,妙用setTimeout代替setInterval进行间歇调用

 "在开发环境下,很少使用间歇调用(setInterval),原因是后一个间歇调用很可能在前一个间歇调用结束前启动",(如,回调当中的代码执行for循环时间比,比设定时间长,在回调还没执行完的时候,第二次定时任务就已经放到事件队列中去了,所以多用seTimeout代替setinterval)

 妙用setTimeout代替setInterval进行间歇调用如下

function func(){
    ​/****执行代码****/
    var settimeStr=setTimeout(func,1000);
    if(){
        clearTimeout
    }//清除定时器
​    
}

setTimeout

setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。 

var timerId = setTimeout(func|code, delay),func可以自定义方法执行内容,code必须以字符串形式写入,因为定时器内部引擎封装的eval方法,如下:

setTimeout('console.log(2)',1000);

setTimeout共有4个参数。

setTimeout(function(i,j){
  console.log(i+j);
},1000,param1,param2);//1000为时间 param1 param2分别为i,j参数的 实际参数值

IE 9.0以下版本,只允许setTimeout有两个参数,同时func是属于全局范围类执行

setTimeout(function(i,j){
  console.log(i+j);
  console.log(this);//this指向window对象
},1000,1,2);

setInterval 

大致同settimeout,

区别:setInterval间歇调用,是在前一个方法执行前,就开始计时,比如间歇时间是500ms,那么不管那时候前一个方法是否已经执行完毕,都会把后一个方法放入执行的序列中。有可能前面一个方法还没执行完后面一个程序已经开始,比如func中执行alert,不点击确定

你可能感兴趣的:(setTimeout和setInterval解析,妙用setTimeout代替setInterval进行间歇调用)