码迷,mamicode.com
首页 > Web开发 > 详细

js高级技巧之高级定时器

时间:2015-10-04 14:44:18      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

实际上,浏览器负责进行排序,指派某段代码在某个时间点运行的优先级。

可以吧js想象成在时间线上运行的。

JavaScript中没有任何代码是立刻执行的,但一旦进程空闲则尽快执行。

1.重复的定时器:

setInterval()的重复定时器存在两个缺点:

(1)某些间隔会被跳过

(2)多个定时器的代码执行之间的间隔可能比预期的小;

假设,某个onclick事件处理程序使用setInterval()设置了一个200ms间隔的重复定时器。如果事件处理程序花了300ms多一点的时间完成,同时定时器代码也花了差不多的时间,就会同时出现跳过间隔且连续运行定时器代码的情况。

 为了避免这个缺点,可以使用链式setTimeout()调用。

 

		setTimeout(function() {
			setTimeout(arguments.callee, interval);
		},interval)

callee是arguments的一个属性,指的是对函数对象本身的引用。

2.Yielding Processes

运行在浏览器中的JavaScript都被分配了一个确定数量的资源。

脚本长时间运行的问题通常是由两个原因之一造成的:

(1)过长的、过深嵌套的函数调用。

(2)进行大量处理的循环。

		for (var i = 0,len=data.length; i < len; i++) {
			process(data[i]);
		};

process要花100ms,那么总的花费时间是由数组的长度决定的。JavaScript的执行是一个阻塞操作,脚本运行花费的时间越久,用户无法与页面交互的时间也越久。

 

解决这个问题有一种技术叫做:数组分块

 

js高级技巧之高级定时器

标签:

原文地址:http://www.cnblogs.com/xinxingyu/p/4854492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!