js定时器复习

今天学习的时候看到了定时器,有些知识有点忘了系统补充一下

定时调用setInterval

可以将一个函数每隔一段时间执行一次

setInterval(参数1,参数2)

参数1 ----回调函数,该函数每隔一段时间就会执行一次

参数2 ----每次调用执行的时间,单位是毫秒
例子:数字开启跳动

<p id="num">1<p/>

var num =document.getElementById("num");
			var couter = 1 ; 
			 setInterval(function(){
			num.innerHTML = couter++;
			},500);

如上所示,p标签里面的数字就会每隔500毫秒(也就是0.5秒)执行一次,从1开始跳动,但是,因为couter一直出于自增,所以这个定时器函数会一直停不下来…从1到正无穷~

在日常开发中,我们想要把定时器关闭,应该怎么做呢?

使用clearInterval()

clearInterval()

clearInterval(参数)可以用来关闭一个定时器;

而这里面的参数写的又应该是什么呢?

从上面的例子中,setInterval()可以拥有一个返回值,作为这个定时器的标识(timer)

我们将上面的例子进行改进,在setInterval()函数的前面添加一个标识timer

var num =document.getElementById("num");
			var couter = 1 ; 
			var timer =  setInterval(function(){
			num.innerHTML = couter++;
			},500);

当我们想当数字跳到20的时候,就不再变化的时候,可以这样写

var num =document.getElementById("num");
			var couter = 1 ; 
			var timer =  setInterval(function(){
				num.innerHTML = couter++;
				//alert(num.innerHTML);
				if(couter == 11){
					clearInterval(timer);
				}
			},500);
			

设置timer标识的好处是,一个是当setInterval()想要关闭的时候,cleanInterval()可以识别出是哪个定时器想要关闭。

//定义多个定时器
var timer1 =  setInterval(function(){....},500);
var timer2 =  setInterval(function(){....},400);
var timer3 =  setInterval(function(){....},1000);
.....
 
//关闭定时器
cleanInterval(timer1);
cleanInterval(timer2);
cleanInterval(timer3);
.....

setTimeout()延时调用

setTimeout(参数1,参数2)

参数1 — 调用的函数

参数2 — 多少秒后执行的时间,单位为毫秒

setTimeout(function(){…},1000)

setTimeout(function(){
 alert("hello js");
},2000)
 
//两秒后执行alert函数 并且只执行一次,就不会再执行

setInterval(function(){…},参数2)和setTimeout(function(){…},参数2)
共同点:

都是定时器调用,且调用的都是函数。

不同点:

setInterval()是每隔一段时间之后执行一次 且有setInterout来关闭。可以执行N次

setTimeout()是每隔一段时间之后执行一次,没有对应的关闭,执行一次就没了。只能执行1次

当然,setTimeout也有一种特殊写法,可以使它和setInterval()一样执行很多次

function fun(){
    alert("hello,js");
    setTimeout(fun(),1000);//不断的调用函数fun,则形成了和setInterval一样的执行很多次
}
fun();

但是这样写会让fun函数一直执行没有停止,这个时候要想来关闭setTimeout只能靠一些循环语句来限定它什么时候执行

function fun(){
    var i=0;
    if(i<20){
    i++;
    alert("hello,js");
    setTimeout(fun(),1000);//不断的调用函数fun,则形成了和setInterval一样的执行很多次
    }
}
fun();

这样子的话setTimeout就可以有限制条件而开启或关闭了

总结:所以有时候setIntveral和setTimeout是可以相互代替的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值