suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript - setInterval

Die Ausführungszeit für die Ausführung dieses Codes in einem Windows-Browser unterscheidet sich stark von der Ausführungszeit für diesen Code auf einem Mac.
Diese Methode führt alle 1 ms eine Ausgabe durch. Warum gibt es Unterschiede zwischen Windows und Mac? Auf dem Mac ist es offensichtlich langsamer.

var time =0;
var interval = setInterval(function(){
    time++;
    console.log("time="+time);
    if(time===100){
        clearInterval(interval);
    }
},1);
阿神阿神2727 Tage vor701

Antworte allen(2)Ich werde antworten

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-12 09:26:04

    是的,很多时候settimeout和setinterval都不是特别的准的,原因就是js是单线程的

    setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行

    而下一次触发时间则是在setInterval回调函数执行完毕之后才开始计时

    所以如果setInterval内执行的计算过于耗时

    或者有其他耗时任务在执行,setInterval的计时会越来越不准,延迟很厉害.

    Antwort
    0
  • 欧阳克

    欧阳克2017-06-12 09:26:04

    给你举一个简单的例子:

    <script type="text/javascript">
            setTimeout(function(){
                console.log('a');
            } , 0);
            console.log('b');
    </script>

    你猜谁先执行?虽然我们说js是单线程的,但是浏览器是可以控制多线程的,当我们设置setTimeOut的时候,其实浏览器会调用一个线程,而这个线程就叫做Event Loop,让这个线程帮我们去执行,而主线程则继续执行下面的代码,这也就是我们经常会说到的异步模式

    Antwort
    0
  • StornierenAntwort