請求響應順序和請求傳送順序保持一致

2021-08-28 07:27:48 字數 817 閱讀 4248

在搜尋框中輸入內容(例如:'公用'),但搜尋出的內容卻不正確,檢視log或發現搜尋請求返回順序依次為:g/go/.../公用/yon/yong

顯然這是請求響應順序和請求傳送順序不一致,由於先發出的請求處理時間長所以後響應

初試方案

建立乙個佇列(array.push 和array.shift可實現);當第一次請求時,將該請求入佇列並且立即傳送該請求,而後面的請求只push到佇列中;當第一次請求響應後,將隊頭請求傳送出去。這樣便可以實現上次請求響應成功後才傳送下次請求。

改進方案

但是,**實現之後發現搜尋速度很慢,這是同步模式的不足。觀察就會發現,我們並不需要將每個請求都進行傳送和響應,只需要對最新的請求進行傳送和響應即可。所以在上次響應成功後,判斷佇列的長度,如果大於1,則保留隊尾請求(最新請求)否則清空佇列。

handlesearch=(value)=>=this.state

//搜尋子不為空的時候,入佇列

if(value!=='')

//第乙個請求立即傳送【這裡就是所謂的入口呀】

if(queue.length===1)

} search=()=>=this.state

//隊尾請求(最新請求)

let key=queue[queue.length-1]

//傳送隊尾請求

file.getuser(, )

.then(res => else

}).catch(err => else

})}

關於http請求,請求頭和響應頭

via是http協議裡面的乙個header,記錄了一次http請求所經過的 和閘道器,經過1個 伺服器,就新增乙個 伺服器的資訊,經過2個就新增2個。x cache是squid 的自定義header,用來記錄快取的命中與否 squid 是 linux unix 平台下最為流行的高效能免費應用層 伺服...

關於axios請求載入順序問題

axios併發請求 多個介面請求,賦值問題 這裡用到 axios 併發請求 兩個方法 axios.all axios.spread 呼叫方法 axios.all axios.get xx test.json axios.post post.json then axios.spread getdata...

請求頭和響應頭

請求header http request header host 請求的網域名稱 user agent 瀏覽器端瀏覽器型號和版本 accept 可接受的內容型別 accept language 語言 accept encoding 可接受的壓縮型別 gzip,deflate accept char...