axios请求获取到返回值
最近在学习Vue,碰到一个问题就是需要从后端获取到某个返回值之后再运行后面的代码。
一般调用axios接口都是这样的格式。
this.$axios.post('api/xxxx/xxxxx', this.$qs.stringify({
username: 'qwerqw',
password: '123456'
})).then(res => {
...
...
}).catch(error => {
...
...
})
这样的格式要想获取到返回值的话,就要将代码都写在then
中,阅读代码的时候不是很清晰。于是网上各种搜,最后觉得这种方法能解决我的强迫症。
login: async function() {
// result的值就是res.data
let result = await new Promise((resolve,reject) => {
this.$axios.post('api/xxxx/xxxxx', this.$qs.stringify({
username: 'qwerqw',
password: '123456'
})).then(res => {
resolve(res.data)
}).catch(error => {
console.log(error)
})
})
...
...
}
按照这种方式去获取到后端的返回值,就可以将剩下的逻辑放在axios请求外面了。
我的理解是,axios是一种异步请求方法,需要用await关键词修饰,等到获取到返回值后再执行后面的代码。在使用await时,需要再function前添加async关键词。