3

我有以下代码

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

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

有任何想法吗?

4

3 回答 3

14

()从_everything

setTimeout(everything, 30000);

通过包含(),您是在告诉浏览器立即执行everything并将其返回值作为回调函数发送到setTimeout.

于 2012-06-04T17:48:14.317 回答
2

改变

setTimeout(everything(), 30000); 

setTimeout("everything()", 30000);

或者

setTimeout(everything, 30000);
于 2012-06-04T17:48:26.787 回答
1

正如其他人发布的那样,您应该改写:

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

他们没有发布的是解释。在上面的代码片段中,是对调用该方法everything的范围内的函数的引用。Ext.onReady()在您的问题中,您正在使用setTimeout()执行everything()函数的结果。您的everything()函数可能会返回undefined,因此您的setTimeout()调用永远不会执行任何操作。

有人建议使用setTimeout("everything()", 30000). 这实际上与使用eval(). 因此,这不是推荐的方法。

于 2012-06-04T17:55:24.917 回答