最近小编开发用uni-app开发H5页面的时候遇到一个问题,不知道其他小伙伴有没有遇到onLaunch和onload异步问题。欢迎大家留言一起探讨。
按着正常的逻辑来说启动H5页面先触发onLaunch,随后触发onLoad,其实不是,在触发onLaunch的同时也在触发要进入页面的onLoad,所以导致在onLoad里面拿不到onLaunch里的数据。
解决方法,小编也查了资料,提供给大家参考
//第一步:在uni-app项目,main.js中
Vue.prototype.$onLaunched = new Promise(resolve => {
Vue.prototype.$isResolve = resolve
})
//第二步:在app.vue onLaunch中调用接口
onLaunch(){
this.$u.post('/loginAdmin',{//这是调用的接口
workCard: params['userid']
}).then((res)=>{
this.$isResolve()//调用下
}).catch((res)=>{
//出息信息错误
this.$Router.replace({name:"noautority"}) //未授权页面
})
}
//第三步 :在要进入页面的onLoad生命周期
//这里要写成同步的需要加async
async onLoad(){
await this.$onLaunched
//以下在进行业务逻辑操作
}