Javascript setInterval执行时间少于1毫秒?

Sha*_*ban 2 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);
Run Code Online (Sandbox Code Playgroud)

产出

在此处输入图片说明

参见演示:http//jsbin.com/jusiqilayi/edit?js,输出

我想知道是否可以使用setInterval在小于1ms的时间范围内执行功能吗?还是有一种方法可以使用setInterval为给定的示例获得更好的性能?

Ism*_*OUH 6

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

在现代浏览器中,您可以window.postMessage()用作解决方法,以实现此处所述的0 ms超时。