javascript - setInterval
阿神
阿神 2017-06-12 09:24:04
0
2
717

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);
阿神
阿神

闭关修行中......

membalas semua(2)
女神的闺蜜爱上我

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.

学霸

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,让这个线程帮我们去执行,而主线程则继续执行下面的代码,这也就是我们经常会说到的异步模式.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan