2011-05-16 136 views
0

我目前通過使用SetTimeOut函數有一個問題。通過傳遞參數設置超時

的事情是,我需要通過傳遞一個參數來使用它,但它沒有工作...... 下面是代碼:

function RSSChecker(dMObject) 
{ 
    if (dMObject) 
    { 
     alert('Refresh'); 
     window.setTimeout(RSSChecker(dMObject), 10000); 
    } 
} 

任何想法?

+0

你有RSSChecker('blabla');地方? – Val 2011-05-16 09:58:33

+0

http://www.w3schools.com/js/js_timing.asp也檢查此頁面應該刷新你的記憶abit :) – Val 2011-05-16 09:59:34

+0

是你的意圖,遞歸地調用這個函數? – radosch 2011-05-16 10:00:29

回答

4

另一種方法是將內部調用包裝在調用函數的匿名函數中。所以你有: -

window.setTimeout(function() { RSSChecker(dmObject); }, 10000); 
+0

如果在循環內執行setTimeout,則這不會將正確的變量保留在正確的範圍內。 (也許它不是在這種情況下,我會關閉'=)'。) – Rudie 2011-05-16 10:20:10

+0

是的,在這種情況下,dmObject閉包範圍會出現問題,但示例代碼沒有循環,因此它在此處起作用。但是,如果出現了一個循環,將window.setTimeout包裝到另一個匿名函數中會起到訣竅的作用,但是這會使代碼IMO – tinyd 2011-05-16 10:25:04

+0

過於複雜。都是真的。同意。看到+2? – Rudie 2011-05-16 10:26:34