Javascript setInterval执行时间不到1毫秒?

时间:2016-07-03 04:55:56

标签: javascript

我有这个例子比较使用for循环和使用setInerval的简单计数器循环的性能,执行时间差异如下:

var i = 0;
var i2 = 0;
var int1 = null;

console.time("for loop");
do{  
  i++;
}while(i <= 1000);
console.timeEnd("for loop"); 


function fnc(){
  if(i2++ == 1000){
    clearInterval(int1);
    console.timeEnd("interval loop");
  }
}

console.time("interval loop");
int1 = setInterval(fnc , 1);

输出

enter image description here

请参阅演示:http://jsbin.com/jusiqilayi/edit?js,output

我想知道是否可以使用setInterval执行一个时间小于1ms的函数?或者有没有办法使用setInterval?

为给定的示例实现更好的性能

1 个答案:

答案 0 :(得分:5)

setIntervalsetTimeout被迫至少使用最小延迟。最小延迟DOM_MIN_TIMEOUT_VALUE为4毫秒,由HTML5 spec指定,并且在2010年及之后发布的浏览器中保持一致。

在现代浏览器中,您可以使用window.postMessage()作为解决方法,将{0}超时实现为described here