问题描述
axios请求后台封装在一个函数中,用其他函数调用时,因为是异步操作所以总是未执行完后台请求就直接往下执行了,导致取不到正确的数据,请教各位前辈如何解决。vue小白一个,不胜感激。
问题出现的环境背景及自己尝试过哪些方法
尝试使用aysnc和await,如下所示,还是没有成功
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
aysnc checkLogin () {
if (localStorage.getItem("access_token")){
//访问后台查看access_token是否合法
var postData = 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('访问成功')
}else if(response.data.code === 201){
// access_token过期,refresh_token未过期
this.$toast.success('重新生成access_token,且访问成功')
}else if(response.data.code === 404){
// access_token与refresh_token均过期
this.$toast.error("登录信息过期,请重新登录")
console.log('111')
}
})
}else {
this.$toast.error("请先登录")
}
},
async Login () {
await this.checkLogin();
console.log('222')
},
你期待的结果是什么?实际看到的错误信息又是什么?
我想是先执行console.log('111')
后执行console.log(222)
结果总是反的
你在好好看看async/await咋用的。。改了一下