setInterval的简单理解和实验

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 毫秒,那么它结束后,下一次执行就会立即开始。因此遇到特别耗时间的操作要注意。

posted @ 2018-10-06 10:15  html55  阅读(980)  评论(0编辑  收藏  举报