jquery sleep没有在ajax请求上执行

Dan*_*ola 2 javascript ajax jquery sleep

我有一个Ajax请求等待来自另一个进程的响应.

function test() {
    var flag = 0;
    while (flag === 0) {
        $.ajax({
            url: "cs/CheckForProcess",
            async: false,
            success: function(data) {
                if (data !== 'NotReady') {
                    $('#results').html(data);
                    flag = 1;
                } else {
                    $('#results').html('<h1>Processing...</h1>');
                    setTimeout(function() {
                    }, 6000);
                }
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是setTimout不起作用,虽然我在调试模式中看到执行了else条件.


编辑:我希望在验证过程未准备好后仅6秒发送下一个ajax请求.

我错过了什么?谢谢.

jar*_*ada 7

setTimeout是一个异步函数.它不会暂停您的脚本.您的脚本将继续运行(6000毫秒后您的setTimeout回调函数将执行).

您可以考虑使用setInterval来检查其他条件是否为真.

您可以通过跟踪其他地方的服务器响应来删除async:false.一旦成功回调,您应该取消间隔.

function test() {
    var timerId = 0,
    timerId = setInterval(function(){
        $.ajax({
            url: "cs/CheckForProcess",
            success: function(data) {
                if (data !== 'NotReady') {
                    $('#results').html(data);
                    clearInterval(timerId);
                }
            }
        });
    }, 6000)
}
Run Code Online (Sandbox Code Playgroud)