请教各位一个问题,求解答:调用axios请求后台的函数时,如何使请求完成再继续往下执行?

问题描述
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)结果总是反的
开满天机
浏览 1027回答 2
2回答

智慧大石

你在好好看看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");}

慕娘9325324

用co方便点:co(function*(){letres=yieldaxios(...)console.log(res.data)console.log(222);});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript