我有以下代码
Ext.onReady(function () {
setTimeout(everything(), 30000);
});
我正在尝试等待EXT.NET在将任何javascript应用到elemtents之前完全编译页面。这在大多数浏览器中都不是问题,因为$(document).load提供了足够的延迟。当然,可怕的Internet Explorer会过早地触发.load,这意味着我必须输入硬编码的延迟。但是,上面的代码并没有延迟执行所有内容()。
有什么想法吗?
答案 0 :(得分:13)
从()
everything
setTimeout(everything, 30000);
通过包含()
,您告诉浏览器立即执行everything
并将其返回值作为回调函数发送给setTimeout
。
答案 1 :(得分:1)
更改
setTimeout(everything(), 30000);
到
setTimeout("everything()", 30000);
或
setTimeout(everything, 30000);
答案 2 :(得分:1)
正如其他人发布的那样,你应该写这个:
Ext.onReady(function() {
setTimeout(everything, 30000);
});
他们没有发布的是一个解释。在上面的代码段中,everything
是对调用Ext.onReady()
方法的范围内的函数的引用。在您的问题中,您正在使用setTimeout()
来执行everything()
函数的结果。您的everything()
函数可能会返回undefined
,因此您的setTimeout()
调用永远不会执行任何操作。
有人建议使用setTimeout("everything()", 30000)
。使用eval()
时effectively the same thing为{{3}}。因此,这不是推荐的方法。