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

在windows的瀏覽器上執行這段程式碼和在mac上執行這段程式碼的執行時間差異很大。
此方法是沒1ms執行一次輸出。為什麼windows和mac會有差異呢? mac上明顯更慢。

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

闭关修行中......

全部回覆(2)
女神的闺蜜爱上我

是的,很多時候settimeout和setinterval都不是特別的準的,原因就是js是單線程的

setInterval的回呼函數並不是到時後立即執行,而是等系統計算資源空閒下來後才會執行

而下次觸發時間則是在setInterval回呼函數執行完畢之後才開始計時

所以如果setInterval內執行的計算太耗時

或有其他耗時任務在執行,setInterval的計時會越來越不準,延遲很厲害.

学霸

給你一個簡單的例子:

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

你猜誰先執行?雖然我們說js是單線程的,但是瀏覽器是可以控制多線程的,當我們設定setTimeOut的時候,其實瀏覽器會呼叫一個線程,而這個線程就叫做Event Loop,讓這個執行緒幫我們去執行,而主執行緒則繼續執行下面的程式碼,也就是我們常會說到的非同步模式

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板