0

私が必要としているのは、javascriptが条件をチェックし続けることです(whileループと同様)。私はsetIntervalを実行してこれを行っています。条件が満たされた場合は、間隔をクリアして終了します。または、X回実行された場合は、以下の場合は100に設定します。

私はこれがあまり好きではありません、それがうまくいくので私はそれを一緒に投げました。サーバーからのデータをチェックしていますが、これは遅いです。別の方法が必要な主な理由は、AJAX呼び出しの開始時に実行される読み込みGIFがあるためです。このコードを、表示のために下部に貼り付けます。動作が遅いので、javascriptがインターバルにある間は、gifをレンダリングできないため、動画が停止するだけだと思います。

誰かが私がやりたいことをするための代替案を知っていますか?これが理にかなっているといいのですが?

function checkCondition(name,action){
    var timesRun = 0;
    var success = false;

        var interval = setInterval(function() {
            timesRun++;
            var container = {};
            container = mapSystem["desktop"];

            if(action === "delete"){
                var isExisting = name in container ;
                if ( !isExisting || (timesRun === 100)) {
                    //break out of this interval
                    clearInterval(interval);
                    renderCheckList();
                    success = true;
                } else {
                    // Update mapNodeData with fresh data
                    updateData('desktop', false); // Just updates data
                }
            }
        }, 2000);
}

// Code that I have to render a loading GIF. Works great but seems 
// to stop during the interval
$('#loading').hide().ajaxStart(function() {
                $(this).show();
             }).ajaxStop(function() {
                $(this).hide();
            });
4

1 に答える 1

1

ajaxStartの代わりに.ajax()を使用する場合は、アクションが完了したときに実行する関数を設定できます。

ドキュメントから:

完了

タイプ:Function(jqXHR jqXHR、String textStatus)

リクエストが終了したときに呼び出される関数(成功およびエラーのコールバックが実行された後)。関数には2つの引数が渡されます。jqXHR(jQuery 1.4.xではXMLHTTPRequest)オブジェクトと、リクエストのステータス( "success"、 "notmodified"、 "error"、 "timeout"、 "abort"、または「parsererror」)。jQuery 1.5以降、完全な設定で関数の配列を受け入れることができます。各関数は順番に呼び出されます。これはAjaxイベントです。

成功属性とエラー属性を使用して、成功または失敗に別の関数を指定することもできます。

于 2013-03-04T21:07:43.963 に答える