当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript中在1秒内完全执行1000次代码

如何解决《如何在JavaScript中在1秒内完全执行1000次代码》经验,为你挑选了1个好方法。

n = 0;
var timer = setInterval(function() {
    if (n == 0) {
        console.log(new Date());
    }
    // execute some other code here
    n++;
    if (n == 1000) {
        clearInterval(timer);
        console.log(new Date());
    }
}, 1);

此代码在大约3-4秒内执行,具体取决于机器和浏览器.如何让它在1秒内完成?



1> Ring Ø..:

浏览器中的Javascript计时器不准确(对于该用法,C会更好).

但是,在延迟尽可能高的情况下,您可以获得更好的平均精度,尤其是避免低值,例如1 ms.

在一秒钟内对一个函数进行1000次均匀定时调用将很困难.一毫秒是一个低值,触发函数本身的简单执行(加上处理定时器的开销)可能需要一个接近1毫秒(或更多)的时间......这意味着JS解释器在1ms后调用该函数,执行代码然后设置一个新的1ms计时器.因此,呼叫之间的间隔超过1毫秒.

JS解释器做了类似的事情

At t   call function     <-- this takes
       execute function  <-- some 
at t+x set new 1ms timer <-- time
etc...

但是,如果您能够在接近1秒的时间范围内(比现在的3-4秒)结束该过程,尽可能多地进行 1毫秒的呼叫,这是可能的.

var n = 0;

var timer= setInterval(function(){
          if(n++ == 0) {
                console.log(new Date());
          }
     }, 1);

setTimeout(function() {
         clearInterval(timer);
         console.log("Got n="+n+" at "+(new Date()));
     }, 1000);

这与你的程序基本相同

n 每1ms递增一次

但是,该过程的结束由另一个1秒计时器控制

在Chrome中,我得到252n个增量,两个日期相差约1秒.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有