"在开发环境下,很少使用间歇调用(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,不点击确定