在项目中经常遇到在普通函数中使用某个异步调用的结果的需求,今天就遇到一个类似的情况,对象obj的某个属性值是通过后台接口获取过来的,我使用两种方法,都能实现,具体看自己的情况。
1. 直接将obj作为参数传递到获取接口的方法中,在then中直接赋值:
function aa(){
...
getUserNameById.call(this,userId,obj)
...
}
function getUserNameById(id, obj){
getUserInfoById({id:id}).then(res=>{
const {data,code}=res.data
....
user=data
obj.xx=data.realName
...
// })
}
})
}
2. 使用async await来实现
function aa(){
...
getUserNameById.call(this,id).then(res=>{
obj.aa=res.userName
})
....
}
async function getUserNameById(id){
let user=null
await getUserInfoById({userid:id}).then(res=>{
const {data,code}=res.data
...
user=data
....
}
})
return user
}