setTimeout() 无延迟触发

setTimeout() triggering without delay

本文关键字:延迟 setTimeout      更新时间:2023-09-26

>我有以下代码

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

我正在尝试等待 EXT.NET 完全完成页面编译,然后再将任何 javascript 应用于 elemtents。这在大多数浏览器中不是问题,因为 $(document).load 提供了足够的延迟。当然,可怕的IE浏览器过早地触发了.load,这意味着我必须输入硬编码的延迟。然而,上面的代码不会延迟 everything() 的执行。

有什么想法吗?

everything中删除()

setTimeout(everything, 30000);

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

更改

setTimeout(everything(), 30000); 

setTimeout("everything()", 30000);

setTimeout(everything, 30000);

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

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

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

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