防止ajax重复提交引出的另一个问题

//伪代码如下function fooClick(){
    $('button').prop('disable',true);
    $.ajax({
        ...
        async:false, //同步
        success: function(){
            $('button').prop('disable',false);
            ...
        },        error:funciton(){
            $('button').prop('disable',false);
            ...
        }
    })
}

目的比较简单,点击后button变成不可点击,直到http响应完成,变回可以点击。

问题是: 如上代码,当ajax的async属性为false(即同步)时,短时间内快速连续点击3次button(即在第一个ajax还在pending的时候继续点2下button),会依次触发3次ajax请求,当然这3次请求都是等前一个ajax请求响应完成再发起另一次的

当我把ajax的async属性变成true(异步)时候,同样短时间内快速连续点击3次button,只会触发一次ajax请求。(这样的效果是我期望的)

问题是:为什么同步的情况下,click事情似乎被放进一个堆里面?


莫回无
浏览 551回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript