layer.confirm快速點(diǎn)擊會(huì)重復(fù)觸發(fā)事件問題
文昌網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
1 .問題描述:快速點(diǎn)擊會(huì)出現(xiàn),重復(fù)觸發(fā)事件,像后臺(tái)發(fā)起多次請(qǐng)求,此時(shí)后臺(tái)極端=短時(shí)間內(nèi)多次請(qǐng)求,會(huì)出現(xiàn)并發(fā)問題,數(shù)據(jù)臟讀
2.問題分析 :查看layerUI的API發(fā)現(xiàn),系統(tǒng)的confirm是線程阻塞的,而layer.confirm是非阻塞的
3.問題解決
方案1. 防止重復(fù)觸發(fā)事件,前臺(tái)js加鎖
方案2.后臺(tái)代碼加樂觀鎖
此時(shí),方案1解決這個(gè)問題最佳
4.具體實(shí)現(xiàn):
//出庫 output: function () { console.log("出庫請(qǐng)求---"); var lock=false;//默認(rèn)未鎖定 var myconfirm=layer.confirm('是否確認(rèn)出庫?',{btn: ['確定','取消']},function(index){ console.log('success'); console.log(lock); // if(!lock){ lock=true;//鎖定 //發(fā)送 console.log("ajax---"); //發(fā)送ajax $.ajax({ url: '/dubbo/../outBoundByTask.json', isAysn: false, type: 'get', contentType: 'application/json', data:params.join('&'), success: function (result) { var res=$.parseJSON(result); var code=res.code; if(code==0){ layer.msg("操作成功!"); window.location.reload(); }else{ layer.msg(res.msg); } } }); } layer.close(myconfirm); } ,function(index){ console.log('fail'); }); }
以上這篇解決layer.confirm快速點(diǎn)擊會(huì)重復(fù)觸發(fā)事件的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。