实际上,浏览器负责进行排序,指派某段代码在某个时间点运行的优先级。
可以吧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的执行是一个阻塞操作,脚本运行花费的时间越久,用户无法与页面交互的时间也越久。
解决这个问题有一种技术叫做:数组分块
时间: 2024-11-18 23:44:42