async 和 await 初步小用法
项目中需要把ajax获取数据的方法封装起来,没用await之前这样写的
export function getDataSuc(jsondata,activeproject,km){
var datas = []
axios.get(jsondata, {
params: {
activeproject: activeproject,
km:km
}
}).then(res=>{
datas = res.data.data
console.log(datas) // 2
})
console.log(datas) // 1
return datas
}
发现方法返回的datas是空值,2处能输出值,1处输出的是空值,应该是ajax异步获取数据的原因,而且在控制器里能看到,是先输出1处的值,再输出2处的。
用了await和async之后的代码:
async function getDatas(jsondata,activeproject,km) {
return axios.get(jsondata, {
params: {
activeproject: activeproject,
km:km
}
})
}
export async function getDataSuc(jsondata,activeproject,km) {
try {
let datas = await getDatas(jsondata,activeproject,km).then(res => {
return Promise.resolve(res.data.data)
})
return datas
} catch (e) {
console.log(e)
}
}
页面获取return值的方法:
this.list = await util.getDataSuc('/api/zhibo.json',activeproject,km)
这样list就可以获取getDataSuc()返回的值
tips: async返回的是Promise对象;而await等待的就是async函数完成,但await等待的可以是Promise对象或者其他任意表达式的结果