cari

Rumah  >  Soal Jawab  >  teks badan

javascript - setInterval

Masa pelaksanaan melaksanakan kod ini pada penyemak imbas Windows adalah sangat berbeza daripada melaksanakan kod ini pada Mac.
Kaedah ini melakukan output setiap 1ms. Mengapa terdapat perbezaan antara tingkap dan mac? Ia jelas lebih perlahan pada mac.

var time =0;
var interval = setInterval(function(){
    time++;
    console.log("time="+time);
    if(time===100){
        clearInterval(interval);
    }
},1);
阿神阿神2795 hari yang lalu739

membalas semua(2)saya akan balas

  • 女神的闺蜜爱上我

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

    Ya, banyak kali settimeout dan setinterval tidak begitu tepat Sebabnya ialah js adalah single-threaded

    Fungsi panggil balik setInterval tidak dilaksanakan serta-merta selepas tamat masa, tetapi akan dilaksanakan selepas sumber pengkomputeran sistem melahu

    Masa pencetus seterusnya tidak akan bermula sehingga fungsi panggil balik setInterval dilaksanakan

    Jadi jika pengiraan yang dilakukan dalam setInterval terlalu memakan masa

    Atau jika terdapat tugasan lain yang memakan masa yang sedang dilaksanakan, masa setInterval akan menjadi semakin tidak tepat dan kelewatan akan menjadi teruk.

    balas
    0
  • 欧阳克

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

    Biar saya berikan contoh mudah:

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

    Teka siapa yang akan melaksanakannya dahulu? Walaupun kita kata js是单线程的,但是浏览器是可以控制多线程的,当我们设置setTimeOut的时候,其实浏览器会调用一个线程,而这个线程就叫做Event Loop,让这个线程帮我们去执行,而主线程则继续执行下面的代码,这也就是我们经常会说到的异步模式.

    balas
    0
  • Batalbalas