标签:
定时器设定的延迟时间是没有保证的。因为所有在浏览器中执行的JavaScript单线程异步事件(比如鼠标点击事件和计时器)都只有在它有空的时候才会被执行。
setTimeout 会在每次回调函数执行之后至少需要延时10ms再去执行一次(可能是更多,但是不会少)。但是setInterval会每隔10ms就去尝试执行一次回调函数,不管上一个回调函数是不是还在执行。
var num = 12;
console.log(num);
setTimeout(function(){
num++;
console.log(num);
},0);
for(var i=0;i<1000000;i++){
//code;
}
console.log(num);
因为for循环的时间已经超过定时器的等待时间。所以定时器里面的回调函数,只能等到下面的的代码执行结束之后才开始执行。因为即使定时器延迟写0,它仍然会有默认延迟时间,每个浏览器的延迟时间不一样。
标签:
原文地址:http://www.cnblogs.com/huangl/p/4681363.html