setInterval的用法
setInterval(fn_name,time_num);
setInterval(fn_name,time_num,这里是前面函数fn_name的参数);
意思是,现在先不执行fn_name,然后过time_num毫秒执行一次fn_name,过time_num毫秒执行一次fn_name,就这样不停的执行,关了窗口或者用了clearInterval才停止。函数fn_name参数可以放在time_num后面。
注意,函数名不要加引号,那样成字符串了。如果不写函数名,写匿名函数也可以。代码举例
1 //用法1,里面是匿名函数 2 setInterval(function(){ 3 //要做点什么的代码在此 4 },1000);
或者
1 //用法2,注意函数名不要用引号引起来了,也不要在后面加() 2 function fn1(){ 3 //要做点什么的代码在此 4 } 5 setInterval(fn1,1000);
问题1:setInterval设置某个函数执行后,那么他后面的代码会继续执行吗?还是等着他执行结束再执行?
设计测试代码如下:
1 var i=0; 2 setInterval(function(){ 3 i++; 4 console.log(i); // 8秒后才显示这里 5 },8000); 6 7 console.log(i); // 先执行了这里
结果是,先显示出0, 过了8秒钟显示1,过了8秒再显示一次2,。。。。表明了“先不执行某个函数,然后过多久执行一次,过多久再执行一次,以此类推”
问题2:setInterval设置执行函数fn1,间隔时间为100毫秒,而函数fn1执行过程所需要的时间5ms,那么他是100ms执行一次,还是105ms执行一次?
setInterval指定的是“开始执行”之间的间隔,并不考虑每次任务执行本身所消耗的时间。比如,setInterval 指定每 100ms 执行一次,而每次执行需要 5ms,那么第一次执行结束后 95 毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要 105 毫秒,那么它结束后,下一次执行就会立即开始。因此遇到特别耗时间的操作要注意。