0

私は次のjQueryを持っています:

    $.ajax('/contacts_imported', {
        dataType : 'json',
        data : {
            email : cfg.email
        },
        success : function(data) {
            if (data[0].processed) {
                alert('Processed is TRUE!');
            } else {
                alert('Not yet Processed');
            }

        }
    });

私がやろうとしているのは、この ajax リクエストを、processed が True になるまで毎秒実行することです。True になったら、別の関数を実行し、タイマー/ループを強制終了します。

これをエレガントな方法で処理するにはどうすればよいですか?

4

1 に答える 1

2

AJAX リクエストは時々 1 秒以上かかる場合があるため、間隔を使用しないでください。したがって、ajax を関数でラップし、次のように呼び出します。

(function makeRequest() {
    $.ajax('/contacts_imported', {
        dataType : 'json',
        data : {
            email : cfg.email
        },
        success : function(data) {
            if (data[0].processed) {
                alert('Processed is TRUE!');
            } else {
                setTimeout(makeRequest, 800);
            }
        }
    });
}());
于 2013-09-07T17:55:08.410 に答える