2011-05-16 102 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