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

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

請教各位一個問題,求解答:調用axios請求后臺的函數時,如何使請求完成再繼續往下執行?

請教各位一個問題,求解答:調用axios請求后臺的函數時,如何使請求完成再繼續往下執行?

開滿天機 2019-08-21 18:37:44
問題描述axios請求后臺封裝在一個函數中,用其他函數調用時,因為是異步操作所以總是未執行完后臺請求就直接往下執行了,導致取不到正確的數據,請教各位前輩如何解決。vue小白一個,不勝感激。問題出現的環境背景及自己嘗試過哪些方法嘗試使用aysnc和await,如下所示,還是沒有成功相關代碼//請把代碼文本粘貼到下方(請勿用圖片代替代碼)aysnccheckLogin(){if(localStorage.getItem("access_token")){//訪問后臺查看access_token是否合法varpostData=qs.stringify({'access_token':localStorage.getItem("access_token"),'refresh_token':localStorage.getItem("refresh_token"),'username':localStorage.getItem("username")})axios({method:'POST',url:globalVar.remoteUrl+'/LoginCheck',data:postData,responseType:'json',headers:{"Content-Type":'application/x-www-form-urlencoded'}}).then((response)=>{if(response.data.code===200){//允許訪問this.$toast.success('訪問成功')}elseif(response.data.code===201){//access_token過期,refresh_token未過期this.$toast.success('重新生成access_token,且訪問成功')}elseif(response.data.code===404){//access_token與refresh_token均過期this.$toast.error("登錄信息過期,請重新登錄")console.log('111')}})}else{this.$toast.error("請先登錄")}},asyncLogin(){awaitthis.checkLogin();console.log('222')},你期待的結果是什么?實際看到的錯誤信息又是什么?我想是先執行console.log('111')后執行console.log(222)結果總是反的
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

你在好好看看async/await咋用的。。改了一下
checkLogin(){
if(!localStorage.getItem("access_token")){
returnPromise.reject();
}
//訪問后臺查看access_token是否合法
varpostData=qs.stringify({
access_token:localStorage.getItem("access_token"),
refresh_token:localStorage.getItem("refresh_token"),
username:localStorage.getItem("username")
});
returnaxios({
method:"POST",
url:globalVar.remoteUrl+"/LoginCheck",
data:postData,
responseType:"json",
headers:{"Content-Type":"application/x-www-form-urlencoded"}
});
},
asyncLogin(){
letresponse=awaitthis.checkLogin().catch(err=>{
this.$toast.error("請先登錄");
});
if(response&&response.data.code===200){
//允許訪問
this.$toast.success("訪問成功");
}elseif(response&&response.data.code===201){
//access_token過期,refresh_token未過期
this.$toast.success("重新生成access_token,且訪問成功");
}elseif(response&&response.data.code===404){
//access_token與refresh_token均過期
this.$toast.error("登錄信息過期,請重新登錄");
console.log("111");
}
console.log("222");
}
                            
查看完整回答
反對 回復 2019-08-21
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

用co方便點:
co(function*(){
letres=yieldaxios(...)
console.log(res.data)
console.log(222);
});
                            
查看完整回答
反對 回復 2019-08-21
  • 2 回答
  • 0 關注
  • 1056 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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