2014-01-14 74 views
2

我做了的jsfiddle你:調用對象內超時,函數被調用立即

http://jsfiddle.net/fyJP2/

這是代碼:

var chat = { 

    init: function(){ 
     setTimeout(comet , 10); 
    } 
}; 

function comet() 
{ 
    alert('called'); 
} 

$(document).ready(function(){ 
    chat.init(); 
}); 

正如你可以看到彗星()被調用馬上完全忽略了10秒的延遲,爲什麼?我按照setTimeout的要求傳遞彗星而不是彗星(),但函數仍然執行。 我原本以爲這是一個範圍問題,所以我把彗星移到了它自己的函數中,但是這樣做:http://jsfiddle.net/fyJP2/1/結果是一樣的。

有人可以解釋我爲什麼嗎?

+2

這是10毫秒,請參閱手冊:-) –

+2

10 * 1000,而不是10 – Andrew

+0

謝謝你們,我現在覺得自己很蠢。 – 0plus1

回答

2

正如已經指出的,傳遞給window.setTimeout的第二個參數是以毫秒爲單位。 因此,你的代碼應該是:

init: function(){ 
    setTimeout(comet , 10000); 
} 

。假定你的意思是十秒鐘,那是。

在這裏閱讀更多:https://developer.mozilla.org/en/docs/Web/API/window.setTimeout

+0

我失明瞭,現在我明白了。將在7分鐘內收到。對這個小東西瘋了。 – 0plus1

+0

沒有probs。容易犯的錯誤:) –

相關問題