setInterval的简单理解和实验

时间:2023-03-09 20:03:11
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,里面是匿名函数
setInterval(function(){
//要做点什么的代码在此
},1000);

或者

 //用法2,注意函数名不要用引号引起来了,也不要在后面加()
function fn1(){
//要做点什么的代码在此
}
setInterval(fn1,1000);

问题1:setInterval设置某个函数执行后,那么他后面的代码会继续执行吗?还是等着他执行结束再执行?

设计测试代码如下:
         var i=0;
setInterval(function(){
i++;
console.log(i); // 8秒后才显示这里
},8000); console.log(i); // 先执行了这里

结果是,先显示出0, 过了8秒钟显示1,过了8秒再显示一次2,。。。。表明了“先不执行某个函数,然后过多久执行一次,过多久再执行一次,以此类推”

问题2:setInterval设置执行函数fn1,间隔时间为100毫秒,而函数fn1执行过程所需要的时间5ms,那么他是100ms执行一次,还是105ms执行一次?

setInterval指定的是“开始执行”之间的间隔,并不考虑每次任务执行本身所消耗的事件。比如,setInterval 指定每 100ms 执行一次,而每次执行需要 5ms,那么第一次执行结束后 95 毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要 105 毫秒,那么它结束后,下一次执行就会立即开始。遇到特别耗时间的操作要注意。

相关文章