JS异步处理 setTimeout / setInterval 比较

一般来说JS异步处理主要有两种:  setTimeout 和 setInterval 


如果只需要延时执行一次XXX事件,那么一般采用setTimeout 

setTimeout(function(){alert("kewen nihao!")}, 2000);

很容易明白就是延时2秒,执行方法体里面的代码。 


但是如果需要根据某个条件循环执行,那么就必须使用setInterval了。

setTimeout在 for/while循环中,是不会等待延时时间的。

比如我现在这样写:

		for (var int = 0; int < 10; int++) {
			setTimeout(function(){alert("kewen nihao!")}, 2000);
		}

按照正常理解,那肯定是等2秒,弹一次框。 实际则不然,for循环会执行完所有的循环体,然后2秒后一下子弹出10次弹框。这表示循环体内不会等待setTimeout的延时。

这个时候我们就要采用setInterval来实现每次循环延时2秒执行的需要:

 var intervalId = setInterval(function(){
	times += 1;
	alert("kewen nihao!");
	if (times == 10) {
		clearInterval(intervalId);
	}	
},5000); }
这个时候就会按照我们之前设想的,每隔5秒钟执行一次方法体,直到循环10次结束。

clearInterval(intervalId) 用于终止此次循环。 setInterval会有一个id的返回值,用于clearInterval时使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值