setTimeout()无延迟地触发

时间:2012-06-04 17:47:14

标签: javascript jquery ext.net

我有以下代码

        Ext.onReady(function () {
            setTimeout(everything(), 30000);
        });

我正在尝试等待EXT.NET在将任何javascript应用到elemtents之前完全编译页面。这在大多数浏览器中都不是问题,因为$(document).load提供了足够的延迟。当然,可怕的Internet Explorer会过早地触发.load,这意味着我必须输入硬编码的延迟。但是,上面的代码并没有延迟执行所有内容()。

有什么想法吗?

3 个答案:

答案 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}}。因此,这不是推荐的方法。