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 请求每秒运行一次,直到处理等于 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 回答