Javascript setInterval每秒执行100000000次

Javascript setInterval每秒执行100000000次,javascript,setinterval,Javascript,Setinterval,我想使用setInerval使增量达到每秒100000000 (function counterIt(starting,speedPerSecond){ var speed=0; var intervalCount=1; if(speedPerSecond<100){ extraSpeed=1; speed=1000/speedPerSecond; }else{ extraSpeed=speedPerSeco

我想使用setInerval使增量达到每秒100000000

 (function counterIt(starting,speedPerSecond){
    var speed=0;
    var intervalCount=1;
    if(speedPerSecond<100){
        extraSpeed=1;
        speed=1000/speedPerSecond;
    }else{
        extraSpeed=speedPerSecond/1000;
        speed=1;
        if(extraSpeed>1000){
            intervalCount=extraSpeed/1000;
            extraSpeed=extraSpeed/intervalCount;
        }
    }
    document.getElementById('counter').innerHTML=starting;
    for(var interval=0;interval<intervalCount;interval++){
        setInterval(function(){
            for(var i=0;i<extraSpeed;i++){
                    document.getElementById('counter').innerHTML=parseInt(document.getElementById('counter').innerHTML)+1;
            }
        },speed);
    }
 })(0,1000000);
(功能计数器(启动、速度/秒){
var速度=0;
var区间数=1;
如果(1000){
间隔计数=超高速/1000;
extraSpeed=extraSpeed/间隔计数;
}
}
document.getElementById('counter')。innerHTML=开始;
对于(var间隔=0;间隔
浏览器中的增量速度是否有限制

是的,上面写着

如果嵌套级别大于5,并且超时时间小于4,则将超时时间增加到4

这意味着,在对处理程序进行5次调用之后,最小延迟为4毫秒

此外,请注意,使用带有小超时的
setInterval
可能会很危险,因为如果处理程序运行的时间超过超时时间,则可能会冻结浏览器


取而代之的是,在处理程序的末尾考虑使用<代码> StimeTimeU/code >。< /P>浏览器每秒只画60帧(最多),所以你不必这样做。<代码> PASSMEST < /Code >,但我怀疑它是否快。根据JSPIF,我的服务器类机器可以在5亿2000万个OPS上增加一个数字(只是一行代码)。。如果执行更多操作,会大大降低速度,因此我怀疑您是否可以执行十亿次操作,尤其是在添加计时器和DOM开销后。interval参数的分辨率为毫秒,但在现代浏览器中最小值为5毫秒,在旧浏览器中更为明显。正如SLaks指出的,更新它比屏幕显示的速度快。此外,更新循环中的元素是没有意义的,浏览器在您退出该函数之前不会显示任何更改,因此您可以将其设置为最后一个值(添加

extraSpeed
)并跳过循环。您能看看这个吗,我认为问题在于渲染到屏幕中