async/await 本质上依然是基于Promise,但在使用上更加简便符合自然习惯。
async函数内部同步执行。await之间相当于.then。
async函数外部的调用异步执行。
需要try/catch await应对promise reject的情况。
getUser () {
return this.$getAjax('user/list')
},
async searchUser () {
/**
* 输出顺序为
* 1, res user 2, 3
*/
try {
console.log(1)
let res = await this.getUser()
console.log(res, 'res user 2')
console.log(3)
} catch (error) {
console.log(error)
}
},
// $getAjax函数
function $getAjax (url = '', params = {}) {
return axios
.get(url, {
params: params
})
.then((res) => {
if (res.code === 1) {
return Promise.resolve(res)
} else {
this.$message.error(res.msg)
return Promise.reject(res.msg)
}
})
.catch((error) => {
return Promise.reject(error)
})
}