第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大家一般是怎么處理ajax請求返回的時序問題呢?

大家一般是怎么處理ajax請求返回的時序問題呢?

哆啦的時光機 2023-04-14 14:10:02
一般我們用ajax實現(xiàn)的autocomplete系統(tǒng),隨著用戶的輸入我們向后端發(fā)出去的請求依次應該是autocomplete?q=j autocomplete?q=java autocomplete?q=javasc如果遇到網絡延時比較嚴重,當我們處理完q=javasc的請求后,q=j的請求才返回過來,那么如果不做任何處理這個時候就會顯示q=j的結果,顯然這是不合理的,大家一般是怎么處理這種問題的呢?有人可能會想,用延時觸發(fā),其實這根本不能解決問題,延時觸發(fā)只能減少請求的頻率,但是如果你請求返回的時間超過了延時的時間,照樣會產生錯亂.
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

其實方法很簡單:終止前一個請求并刪除此請求:

// when keyupif (lastXhr) {
    lastXhr.abort();    delete lastXhr;
}
...

這樣做還有兩個優(yōu)點:

  1. 可以防止打字太快導致浪費許多請求(比如用戶很快把java打出來,其實j,ja,jav的請求都不需要了),

  2. 可以防止因為突然間收到很多提示結果導致提示框亂閃


查看完整回答
反對 回復 2023-04-17
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

  • 目前大多自動完成是通過用戶輸入來延遲查詢頻率的,每次請求可以加上loading狀態(tài),讓用戶知道自動完成在處理請求.

  • 在請求里加上時間戳,以比較返回時間是否超出預期,如果超出預期且當前詞與請求里的詞不一致則忽略掉返回結果.

  • 最好的辦法是換個速度快點的服務器,優(yōu)化服務端處理時間,快速完成用戶的請求.


查看完整回答
反對 回復 2023-04-17
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

我是這么處理的,首先你肯定是要記錄每次輸入的事件,每次輸入之后放入到一個數組中,如

var key_arr = [];
key_arr.push('j');//依次類推key_arr.push('ja');
key_arr.push('jav');
key_arr.push('java');//end//然后在ajax回調函數里面就很好判斷了,我們在ajax返回值里面把查詢的關鍵詞也返回來,然后如下判斷if(data.keyword == key_arr.pop()){//處理原有的邏輯}

實際上就是只處理最后輸入的那個關鍵詞的ajax回調函數邏輯,實現(xiàn)可能不太優(yōu)雅呵呵


查看完整回答
反對 回復 2023-04-17
  • 3 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號