九州編程
2019-03-05 16:23:27
在做一個vue項目的時候發(fā)現(xiàn)一個問題,就是有一個根據(jù)input搜索框的值來查詢數(shù)據(jù)的頁面。在快速點擊搜索按鈕2次或者多次之后。由于網咯的原因??赡軐е伦詈笠淮吸c擊查詢按鈕返回的值被前面的請求結果給覆蓋了。。這種情況應該怎么解決呢。。只想保留最新一次發(fā)起的請求。如果沒有這個搜索按鈕。只有一個input框(實時搜索)呢?即便是函數(shù)截流也會導致這個覆蓋的問題(網絡延遲)
5 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
設置一個id,每次開始ajax請求前更新這個id并在scope中保留副本,并取消前次ajax請求。請求結束后查詢該id是否與本次請求的id對應,否的話就拋棄本次response
節(jié)流函數(shù)適合避免短時間內多次請求,但是并不能保證請求返回后按順序更新UI

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
一、對于前端
防止重復點擊按鈕:可以采用一點擊一次后讓按鈕置灰,暫時不可以用,響應結束后再可以用。
防止重復提交請求:可以采用請求隊列的方式,每次請求時檢查隊列中有無該請求,有則返回,無則提交,并將該請求添加到隊列,響應完畢,將響應的請求從隊列中移除。
二、安全方面,需要前后端協(xié)同處理
推薦您看一下說說API的防重放機制
目前我們公司就采用這些方式!
添加回答
舉報
0/150
提交
取消