问题:
在uni-app中,uni.request等网络请求都是异步的,直接使用可能会导致页面渲染完毕时,数据还未成功获取的情况。
解决方法:
<script>
export default {
data() {
return {};
},
methods:{
getOutInfo(){
return new Promise((resolve, reject) => {
uni.request({
url : `请求地址`,
method : "GET",
data : {},
success: (res) => {
console.log(res)
resolve('suc'); // 千万别忘写!!!
},
fail:(err)=>{
reject('err')
}
})
})
},
async mountDealCount(){
await this.getOutInfo()
console.log('我在数据获取之后执行')
}
},
beforeMount(){
this.mountDealCount()
}
}
</script>
效果:
注意:当调用的级数增加的时候,需要逐级的增加async和await
<script>
export default {
methods:{
getOutInfo(){
return new Promise((resolve, reject) => {
uni.request({
url : `请求地址`,
method : "GET",
data : {},
success: (res) => {
console.log(res)
resolve('suc'); // 千万别忘写!!!
},
fail:(err)=>{
reject('err')
}
})
})
},
async dealInfo(){
await this.getOutInfo()
console.log('我在数据获取之后执行')
},
async loadDeal(){
await this.dealInfo()
console.log('我在 dealInfo 之后执行')
}
},
beforeMount(){
this.loadDeal()
}
}
</script>
总结:
- 将uni.request请求封装在Promise构造函数中;
- 使用async + await;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141456.html