亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

多次請求因為網絡無法保證響應順序,如何保證獲得所有響應結果后生成的列表結果的順序與請求順序一致?

多次請求因為網絡無法保證響應順序,如何保證獲得所有響應結果后生成的列表結果的順序與請求順序一致?

DIEA 2019-05-22 15:21:08
看很多人都誤會成了一次性發送10次,補充為這樣:假如用戶可以連續點擊按鈕,每次發1次請求,每次獲得響應結果后會生成一個li,因為網絡狀態的影響后發出的請求可能先響應,假如點了10次,如何保證10個li的順序與請求的順序一致!使用Promise.all的答案肯定都是不對的,因為你無法預測用戶點擊按鈕的時機,用戶可能一兩秒完成10次點擊,但也可能在10秒內完成......肯定不能說我等用戶點完10次再使用Promise.all請求,何況實際情況不一定是10次。這是我一次面試唯一沒答的很好的題目,所以印象比較深刻,我開始也答的Promise.all,被直接否定,后面我提到在請求報文中攜帶相關參數,響應中返回,本地做mapping關系來實現,但面試官依然不是很滿意。后面經我詢問后面試官只提到了思路,說了幾個詞記得不是很清楚,后續查資料猜測貌似是在請求響應包含一個Request-Id字段,并使用UUID作為該值......沒實踐過不敢確定!
查看完整描述

2 回答

?
BIG陽

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

Promise.all可以保證順序但是得等到所有請求完畢才會觸發
functionp1(time){
returnnewPromise(function(resolve,reject){
setTimeout(function(){
resolve(time);
},time);
})
}
Promise.all([p1(5000),p1(1000)]).then(function(res){
console.log(res);//[5000,1000]
});
                            
查看完整回答
反對 回復 2019-05-22
  • 2 回答
  • 0 關注
  • 513 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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