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

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

vue 中多個并發請求當一個請求檢測到需要登錄時,取消其它請求并在登錄完成后重新發起

vue 中多個并發請求當一個請求檢測到需要登錄時,取消其它請求并在登錄完成后重新發起

慕碼人8056858 2019-03-13 17:19:49
這個項目是在微信中基于微信的靜默登錄,也就是不需要多余用戶登錄填寫,只需要跳轉重新加載一遍頁面就完成登錄了,之前是用攔截器做的檢測到未登錄的代碼就直接跳轉實現自動登錄再返回原來頁面,但是同一個頁面該發起的請求還是同時發起了?,F在我想實現的是//同時發起5個請求axios1()//假如第一個請求拿到數據檢測到未登錄的話就取消掉后邊的幾個請求axios2()axios3()axios4()axios5()有什么比較好的思路或者實現方式么?
查看完整描述

10 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

你可以等到一個請求完之后在決定是否要發起后續的請求


查看完整回答
反對 回復 2019-03-27
?
慕俠2389804

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

這樣行嗎?


axios1().then(res=>{

        if(!res.login){

        //go login

        }else{

        axios2()

        axios3()

        axios4()

        axios5()

        }

})


查看完整回答
反對 回復 2019-03-27
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

通過cancelToken可以取消get類型請求,但是其他類型的請求無法通過cancelToken取消


查看完整回答
反對 回復 2019-03-27
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

你可以使用axios.all(),雖然不會取消其他請求,但是只要有一個借口異常,所有接口就不會走正常的回調函數,這樣也不會影響業務操作

查看完整回答
反對 回復 2019-03-27
?
30秒到達戰場

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

首先包裝一下每一個 promise ,即使失敗也至為 resolve 狀態,然后用 Promise.race 確保一個完成后記錄下 index 或者 id,然后重新發這個 array 里面的其他請求。

request 的 abort 不知道兼容性如何,這種方法是所有請求都必須發完全,并且除了成功的那個其他都會發兩遍。


查看完整回答
反對 回復 2019-03-27
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

你可以在axios請求的時候做攔截


查看完整回答
反對 回復 2019-03-27
?
www說

TA貢獻1775條經驗 獲得超8個贊

首先,你要復寫 axios 方法(不推薦)或者自己封裝一個方面(推薦),然后:

  1. 接到任何請求,都直接加入隊列

  2. 判斷是否已登錄,如是,則正常發送請求

  3. 如果不是,則跳轉到登錄頁登錄

  4. 登錄完成后,檢查隊列,如果有請求,就發送


查看完整回答
反對 回復 2019-03-27
?
森林海

TA貢獻2011條經驗 獲得超2個贊

http是無狀態請求,請求無法被取消。非要用異步實現的這個功能是不可能的,但是你可以取消回調函數的執行。


查看完整回答
反對 回復 2019-03-27
  • 10 回答
  • 0 關注
  • 1660 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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