关于 app.js 中的生命周期方法 onLaunch 中使用 await 的问题 ?
有如下代码 async onLaunch() {
console.log('[app.js - onLaunch] execute start')
await proTest()
await proTest2()
console.log('[app.js - onLaunch] executed end')
}
proTest 与 proTest2 均为 Promise proTest 使用了 setTimeout 模拟接口调用 延迟两秒 proTest2 使用了微信获取用户设备信息的 api 理想情况下应该为 onLaunch 阻塞两秒之后 再通过 proTest2 方法 将设备信息放到 storage 中 再通过 behaviors 的方式从 storage 中取出 这样页面就自带设备信息而不需要重新获取了 proTest 确实延迟了两秒 但是这期间已经开始执行页面(此处使用的 Component 替代 Page)的生命周期函数了 所以是不是可以说 虽然 app.js 中的生命周期确实先于 page 或 component 的生命周期 但这种情况下并不会等待 onLaunch 中的代码执行完毕 再执行 page 或 component 的生命周期呢 ? 另外 微信小程序 各生命周期的执行顺序(从 App 到 Page 到 Component)有文档参考吗 我没有找到 如果有的话请诸位大佬给个链接我参考参考 谢啦先~ 导致的线上问题:其他 page 中有依赖 模拟接口 中返回的值 以及模拟接口之后的代码放入 storage 中的值 但是 其他 page 并没有等模拟接口执行完毕再执行 所以未获取到需要的参数 导致初次进入页面后白屏 必须手动重新刷新页面才能获取 重现方式:点击 清除缓存 再 重新编译 如最后图片所示(务必每次都这样测试 模拟用户第一次进入小程序 或者 手动清除 storge 中的 key 也可以) 代码片段:https://developers.weixin.qq.com/s/8SacrFmn7kSv ------------------------------------------------------------------------------------------------------------------ ps: 代码片段导入的时候报错 Uncaught ReferenceError: __wxConfig is not defined 我是通过点击 不校验安全域名 勾上 再取消 或者 取消 再勾上 就不报错了 (别问我为什么 一问一个不吱声) [图片]