关于javascript:jQuery停止ajax异步运行

jQuery stop ajax running asynchrously

本问题已经有最佳答案,请猛点这里访问。

有没有办法防止Ajax异步运行?

jQuery:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var returnValue = false;
        var appCount = 0;

        $.ajax({
            type:"GET",
            url:"getBookedAppointmentCountByDoctorAndDate.php",
            data: dataString,
            success: function (response){
                appCount = response;
                //alert(appCount);
                if(appCount >= 6){

                    returnValue = true;
                }
            }
        });
        return returnValue;

我的代码中有一个if语句,它检查这个函数的返回值。因为Ajax是异步运行的,所以if语句将在设置返回值之前继续运行。对于返回PHP值的其他方法有什么想法或建议吗?

1
2
3
if (blah($(this)) === true) {
                    alert("blah");
                } else { ...


在ajax参数http://api.jquery.com/jquery.ajax/中添加参数async: false,浏览器将处于非活动状态,而ajax请求则不好决定。

最好把if statement移到ajax成功函数,或者用if statement做函数并调用成功函数。


您正在函数中使用此代码段,对吗?既然你有一个return声明,我想是的。

不能返回将在异步任务中确定的值。您可以做的是将回调函数传递给该函数,当确定该值时,将该值传递给该函数并调用它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function myFunc(callback) {

    var returnValue = false;
    var appCount = 0;

    $.ajax({
        type:"GET",
        url:"getBookedAppointmentCountByDoctorAndDate.php",
        data: dataString,
        success: function (response){
            appCount = response;
            //alert(appCount);
            if(appCount >= 6){
                returnValue = true;
            }
            callback(returnValue);
        }
    });
}



myFunc(function (value) {
    console.log(value);
    // do what ever you want with `value`
})

另一种方法是使用Promise。如果您想使用jquery的承诺,这里是文档