3

私は次のコードを持っています

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

EXT.NETがページのコンパイルを完全に完了するのを待ってから、JavaScriptを要素に適用しようとしています。$(document).loadは十分な遅延を提供するため、これはほとんどのブラウザで問題にはなりません。もちろん、恐ろしいInternet Explorerは.loadを時期尚早にトリガーします。これは、ハードコードされた遅延を挿入する必要があることを意味します。ただし、上記のコードは、everything()の実行を遅らせることはありません。

何か案は?

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 に答える