//偽代碼如下function fooClick(){
$('button').prop('disable',true);
$.ajax({
...
async:false, //同步
success: function(){
$('button').prop('disable',false);
...
}, error:funciton(){
$('button').prop('disable',false);
...
}
})
}目的比較簡單,點(diǎn)擊后button變成不可點(diǎn)擊,直到http響應(yīng)完成,變回可以點(diǎn)擊。問題是: 如上代碼,當(dāng)ajax的async屬性為false(即同步)時,短時間內(nèi)快速連續(xù)點(diǎn)擊3次button(即在第一個ajax還在pending的時候繼續(xù)點(diǎn)2下button),會依次觸發(fā)3次ajax請求,當(dāng)然這3次請求都是等前一個ajax請求響應(yīng)完成再發(fā)起另一次的當(dāng)我把a(bǔ)jax的async屬性變成true(異步)時候,同樣短時間內(nèi)快速連續(xù)點(diǎn)擊3次button,只會觸發(fā)一次ajax請求。(這樣的效果是我期望的)問題是:為什么同步的情況下,click事情似乎被放進(jìn)一個堆里面?
防止ajax重復(fù)提交引出的另一個問題
莫回?zé)o
2018-09-07 15:14:17