js--定时器的使用

本文详细介绍了JavaScript中的定时器使用,包括setInterval用于周期性执行函数,setTimeout进行延时调用。通过示例展示了如何启动和关闭定时器,并分析了两者之间的共同点和区别,强调在特定情况下它们可以互相替代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定时调用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);

注意clearInterval(timer)这句代码的意思就是:把timer对应的定时器关掉。


设置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没有像setInterval那样子有setInterout来关闭。(setTimeout孤军奋战);


这个时候要想来关闭setTimeout只能靠一些循环语句来限定它什么时候执行 

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

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值