onLaunch 是应用生命周期,初始化完成时触发(全局只触发一次),
onload是页面生命周期,理论上应该先执行onLaunch 后执行页面生命周期onLoad,实际上在执行onlaunch的同时,也会执行onLoad生命周期,可能会导致一些数据加载问题。

一、main.js

// 让页面的 onLoad 在 onLaunch 之后执行
Vue.prototype.$onLaunched = new Promise(resolve => {
    Vue.prototype.$isResolve = resolve
})

二、在 App.vue 的 onLaunch 中增加代码 this.$isResolve();

//app.vue生命周期中,onlaunch执行时,执行this.$isResolve()
onLaunch () {
	//发送请求
    uni.request({
        success: loginRes => {        
            // 当执行完业务逻辑,需要同步onload时,调用一下
            this.$isResolve()            
        }
    })
}

三、在页面 onLoad 中增加代码 await this.$onLaunched;

//onLoad 生命周期函数前,加async/await,用此方法同步执行顺序
	async onLoad() {
		//async/await,当执行完APP生命周期中的onlaunch,再执行页面中的业务
		await this.$onLaunched;
		
		//执行页面中的业务代码

	},

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐