JS中setTimeout定时器和setInterval定时器理解笔记

setTimeout是单线程,可以说是一部但不完全是
setInterval则是循环定时,但是经过延时后一直在里面循环

在俩个定时器中
可以用clearTimeout(setTimeout()赋给值的变量);
和clearInterval(setInterval()赋给值的变量);

setTimeout定时器和setInterval定时器的嵌套使用及延时顺序

setTimeout(function(){
	alert("hello");
	setTimeout(function(){
		alert("world");
	},2000);
},2000);

无论是alert("hello");在下一个setTimeout前后,到了2秒则率先执行,之后再等2秒 再是alert("world");。但要注意的是只执行一次后,然后就没有然后了。

再来看看setInterval定时器:

setInterval(function(){
	setTimeout(function(){
		alert("hello");
		setTimeout(function(){
			alert("world");
		},2000);
	},2000);  
},5000);

先是执行setInterval()函数,在那之前先停顿所写的5秒后再执行。之后等待2秒执行第一个setTimeout()里的语句。再等2秒执行第二个setTimeout()里的语句。但因为再setInterval()里所以循环执行语句。一直循环,请看最后的注意事项。

若是这样一段js呢?

setInterval(function(){
	setTimeout(function(){
		alert("hello");     
	},2000);
	setTimeout(function(){
		alert("world");
	},2000);
},5000);

则出现的顺序是自下而上的,所以过五秒后setInterval()里代码执行,再过俩秒一起执行俩个setTimeout()里的代码,因自下而上执行顺序所以先执行第一个setTimeout()再执行第二个setTimeout()

注意:修正一下:

JS:

setInterval(function(){
	setTimeout(function(){
		alert("hello");
		setTimeout(function(){
			alert("world");
		},2000);
	},2000);  
},5000);

在执行的时候过5秒先是执行setInterval()里的代码,过2秒再是执行setTimeout()最后再过2秒执行第二个setTimeout()这事正确的,但是。第二次循环就不是这样执行的。若你把alert()换成consloe.log(1);和setInterval(...,5);的话第一次还是上所诉,一样,但是之后的循环(第二次,第三次。。。)的延时都是以setInterval(...,5)的之间为准,而且一个或多个一次性的setTimeout()的延时就没有用了,所以之后控制台会乱跳1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

结城明日奈是我老婆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值