博客逐步遷移到,獨立博客,原文地址,http://www.woniubi.cn/js_hide_tab_setinterval/
我們一直都在說,JS的定時非常的不准確,但是很少有人去驗證他,今天我就來驗證一下。首先我們准備一個簡單的例子。
| 簡單例子 |
每隔一秒鍾,然后輸出離最開始的時間差距有多大。
<script type="text/javascript">
var begin = (new Date()).getTime();
var i = 0;
setInterval(function(){
++i;
var now = (new Date()).getTime();
var intvals = ((now - begin)/1000).toFixed(3);
var str = "num:" + i + ";use time:" + intvals;
console.log(str);
},1000);
</script>
然后我們看一下輸出結果。
看起來結果這沒有什么呀,每次只是延時1ms而已,對於我來說,沒有什么影響。
世界不可能永遠都是平靜的,當資源變成了稀缺,競爭加劇的時候,一切都不是那么美好了。
| 非活動Tab |
非活動Tab,就是非當前Tab。瀏覽器有一種機制,就是優先保證當前Tab資源優先使用。我們可以換一種方式說。
活動Tab,相當於太子,其他的都是一些阿哥。如果太子吃肉,阿哥可以也干糧。太子連干糧也吃的話,阿哥們只能喝湯了,還是一些阿哥搶着喝湯。沒辦法,資源就是這么多,不是我不想給你。
這個例子也很簡單,就是活動Tab干一件非常消耗CPU的事情,然后我們過一會去觀察我們剛才的Tab。
for(var i = 0;i!=100000;++i){ console.log(i); }
這次結果就不是那樣簡單了,看看,這是多么不靠譜的定時呀。
| 活動Tab |
其實你也許說這不能反應問題,如果非活動頁面如果做耗時CPU,活動頁面定時一樣不准?我就做了這么一個測試。結果是這樣的
活動Tab就是不一般呀,延時只是稍微變慢了一點。



