小程序首页onLoad之前生命周期?
发布于 6 年前 作者 guiying10 11143 次浏览 来自 问答

项目需要在首页onLoad之前请求接口获得角色然后隐藏tabbar,请问首页onLoad之前有哪个生命周期?

8 回复

有个笨方法   用计时器

一般页面的最初始就是onLoad了,如果是整个小程序最初始,那么在onLoad之前有一个onLaunch的周期

你可以在page 的 onload 中放一个 init 函数,页面所有初始化操作都在 init 里面来做。在 onload 的时,用个轮询,查询 app.globalData.inited, 当为 true 的时候调用 page.init

但首页的onLoad的请求会比onLaunch先执行。该怎么办

我之前有遇到过类似的需求,,做法是在onload中判断身份以后再处理tabbar,除非你是nasa的网速,否则一定来不及的。。。。ajax是异步的啊兄弟…第一次判断完用本地缓存存起来,第二次就不用依赖请求了,体验会稍微好一点,像你说的这个在页面加载之前处理,任何生命周期都不可能那么慢的~

顺序执行app.js -> (app.js)onLaunch -> app.js中App构造器之后的代码 ->顺序调用Page页面js文件、Component组件js文件中所有js代码(官方称注册页面、组件) -> 首页的onLoad…

你这种情况,只考虑时序上的顺序的话,可以在appjs的App()外层先发起请求,然后请求结果挂载到wx全局变量中;或者在得到结果时getApp()查看是否已有app对象,有则挂靠到app中。在page的onLoad中检查是否已有该变量。没有的话就要考虑怎么拿到这个请求回调的事件了。若方案你觉得合适再给你交流。

测试过很多次了,一个最简单的hello world小程序。从app.js文件中第一行执行到page.onLoad耗时平均60、70ms(模拟器)。有业务的话当然要慢很多。

页面内有多个异步请求,你不管哪个先后执行,返回结果的顺序也不是固定的,所以如果要根据异步结果去判断页面的加载逻辑本身就是一个不合适的。

隐藏tabbar。。如果你是用的小程序默认的tabbar,那就没有更快的生命周期了,如果是自定义tabbar,就在onLaunch的时候判断啊

回到顶部