2013-02-15 44 views
1

我只想知道爲什麼setInterval()setTimeout()不匹配時間結果?setInterval和setTimeout不匹配

語法:

setInterval(code,millisec,lang) 
setTimeout(code,millisec,lang) 

和使用都毫秒..

爲什麼我得到隨機i所有的時間?

所以我的測試功能樣子......

var i = 0; 

$("button").click(function() { 

    var run = setInterval(function(){ 
    i++; $("code").html(i); 
    },0); 

    setTimeout(function(){ 
    clearInterval(run); 
    i = 0; 
    },2000); 


}); 

爲什麼結果不顯示?或者我誤解了什麼?

如果最小。 setInterval()的值爲4ms爲什麼我得不到相同的結果?

遊樂場:http://jsbin.com/ezeliz/1/edit

+0

是你的問題,爲什麼間隔循環未達到2000? – Yoshi 2013-02-15 12:49:28

+0

是的,你的理解權:D @Yoshi – l2aelba 2013-02-15 12:54:02

+1

那麼,答案很簡單。即使您*請求* 0毫秒的時間間隔長度,您也不能保證得到它,因此不應該依賴於設定值。如果你正在做的事情是時間敏感的,你需要跟蹤自己之間的時間差異。 – Yoshi 2013-02-15 12:57:21

回答

1

什麼是setInterval(…, 0)該怎麼辦?零時間後不能重複該功能,總會有小的延遲。實際上,這個延遲甚至被標準化爲4ms的minimum value。例如,Opera 12在2s內計數(幾乎)到500,與之相當,其他瀏覽器可能有更大的延遲(they are free to choose one)。