在JavaScript中,我们很多时候都会需要用到定时器实现一些功能,它用以指定在一段特定的时间后执行某段程序,计时器的作用是仅仅是做一个计划,那就是每隔一段时间执行一次目标方法
我们在写js时候,常常用到两个关于定时器函数,他们分别为:
window.setTimeout(function(){},delaytime); window.setInterval(function(){},delaytime)
1.window.setTimeout(function(){},delaytime): //它是指:设定一个定时器(setTimeout),等到到指定的时间(delaytime)后执行对应的方法(function(){}),方法执行完成后定时器结束。
2.window.setInterval(function(){},delaytime): //和上一个函数不同,这个函数指的是:设定一个定时器(setInterval),等到到指定的时间(delaytime)后执行对应的方法(function(){}),但是方法执行完成后定时器并未结束,以后在每达到指定的时间(delaytime)都会把定时器中的方法执行一次,直到手动清除为止。
在设定定时器的时候,它都有一个返回值,它的返回值所代表的是第几个定时器,列如:
var timer1=window.setTimeout(function(){},1000); console.log(timer1) //->1 var timer2=window.setTimeout(function(){},1000); console.log(timer2) //->1 var timer3=window.setInterval(){},1000); console.log(timer3) //->1 //在这里他所返回的值是多少和我们用哪个函数没有关系,只要设置定时器,不管用哪种方法,都会返回一个数字,它仅仅代表的意思是这个定时器的位置是第几。在js中,我们在使用定时器执行完成我们所需要的功能后,我们都需要把定时器给清除了,清除的方法也很简单:
window.clearTimeout(1); window.clearInterval(2); //不推荐这么使用在上面的时候说过,每个定时器都会返回一个数字,而这个数字代表着它是地几个定时器,所以我们在清除的时候可以在函数后面的()中放入定时器返回的数字,但是这个方法并不推荐用,我们最好在()中放入设置定时器是所声明的变量名,如下:
window.clearTimeout(timer1); window.clearInterval(timer2);ps:我们用哪种方式清除定时器和我们用那种方式设置定时器并没有关系,也就是说,我们用函数window.setTimeout(function(){},delaytime)来设置定时器,在清除定时器的时候,我们用可以window.clearInterval()的方法,不一定非要用它所对应的window.clearTimeout()方法。列如:
window.clearInterval(timer1);//这样我们也可以把timer1这个定时器清下面是两个设置定时器的小应用: 1.用setInterval实现一个多次运动的动画:
var n=0; var timer=window.setInterval(functiom(){//每时隔1m,n就加上1; n++; console.log(n) if(n===5){ window.clearInterval(timer);//在n累加到5的时候,停止累加,这里的清除定时器就是为了不在累加。 } },1000)2.用setTimeout的方法来模拟setInterval的方法实现一个多次运动的动画;
var n=0,timer=null//用来存储每次累加后的n; function move(){ window.clearTimeout(timer) n++; console.log(n); if(n===5){ return; } timer=window.setTimeouter(move,1000) }move();