关于页面定时器的错误「中止」问题

使用页面定时器是很常见的,我前面也探讨过。但是存在一个比较隐秘的问题,假如某次执行过程发生错误(即js执行报错),那么会不会影响下次的继续执行呢?

下面我们通过一个小例子来说明探索:

通过setInterval

<script>
	$(function() {
		//test();
		setInterval('test()', 1000);
	});
	
	function test() {
		 var test = null;
		 console.log('aaaaaaaaa');
		 console.log(test.size);//模拟执行错误
	};
	
</script>

 打开浏览器控制台,你会发现:


 虽然每次执行错误,但是它还是会去定时执行。

 

通过setTimeout回调本身:

$(function() {
		test();
	});
	
	function test() {
		 var test = null;
		 console.log('aaaaaaaaa');
		 console.log(test.size);
         setTimeout("test()", 1000);
	};

 你会发现控制台只执行了一次:


 就不再执行了。

 

以上小例子是很有用的,项目中很可能因为你程序不够严谨的原因,偶然一次Js执行报错,假如你是通过setTimeout来实现定时器的话,很有可能这次偶然执行报错,会影响下一次的执行(卡在当前这一次)。所以最好使用setInterval来做定时器哦。

注意,定时器的第一个参数(js函数名必须加上括号哦,即使这个js函数不需要传参)

  • 大小: 7.9 KB
  • 大小: 2.3 KB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值