setInterval()不準確原因分析

admin發表於2018-08-20

setInterval是一個定時器函式,能夠每隔指定時間執行一次指定的函式或者表示式。

關於它的基本用法可以參閱JavaScript setInterval()一章節。

但是有時候此定時器函式並不準確,這是因為JavaScript是單執行緒,儘管已經到了規定的時間去執行指定的程式碼,但是可能執行佇列中還有其他程式碼需要執行。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var startTime = new Date().getTime(); 
var count = 0;
setInterval(function(){ 
  var i = 0; 
  while(i++ < 100000000); 
}, 0);
  
setInterval(function(){ 
  count++; 
  console.log(new Date().getTime() - (startTime + count * 1000)); 
}, 1000);

按照理論,正常輸出值應該是1000,但實際執行結果卻不是這樣。

相關文章