0

10秒ごとに実行され、AJAXリクエストを送信する必要がある単純なJSタイマーがあります。問題は、一部の Windows XP マシンでこのタスクの実行が停止することです。AJAX 要求が送信されません。45分間正常に実行された後、ランダムな時間停止し、開始してさらに45分間正常に実行されたようです...私の質問は、これが発生する原因は何ですか? PC で実行されているサービス/スケジュールされたタスクによって、javascript タイマーが停止することはありますか?

Ext.onReady(function(){

    var task = {
        run: function(){
            Ext.Ajax.request({
                url: 'test.php'
            });
        },
        interval: 10000
    };
    Ext.TaskManager.start(task);    

});
4

1 に答える 1

0

いくつかの提案:

  1. Ext.TaskManager通常のに切り替えてみてくださいsetInterval。それで問題が解決した場合は、タスクマネージャにバグがある可能性があります。

  2. それが機能しない場合は、次のことを試してください。

    • 間隔を使い続けてください。間隔のを記録しidます。最後の実行時刻も記録します。

    • setIntervalより大きな間隔、たとえば1分で別のタイマーを開始します。コールバック内で最後の実行時間をチェックします。

    • ずっと前(> 30秒)の場合は、保存clearIntervalしたidものを使用して呼び出し、タスク間隔を再開します。

  3. それでも問題が解決しない場合は、これらのポーリングタスクを別ので実行してみてください<iframe>。ブラウザは、他のタスクでビジー状態の場合、インターバルコールバックとタイムアウトコールバックの呼び出しをスキップできます。それらを別々に配置することにより<iframe>、他のタスクがそれらに干渉しないように、それらに専用のイベントループを与えます。

于 2013-01-04T12:39:48.957 に答える