请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

onLoad和onShow中异步请求的执行顺序

老师, 在onLoad 中存在异步请求函数await this._getService(),所以this._getServie()里面的代码还没执行完时,onShow就已经执行完了,所以 this._checkRole 没有获取到service才导致有BUG。
但我听您的课,说是问题出在 this._getService 函数中的 this.setData({})
但我感觉,更倾向于前者。正确的情况是怎样呢

  • 代码

图片描述

正在回答

1回答

onLoad() 和onShow() 两个本身没什么必然联系,只不过 onLoad 的执行顺序是在 onShow 之前,仅此而已。

这里会说原因是在 this.setData()是因为 setData 本身是异步的。生命周期函数本身也是异步的,在一个异步里面写异步,这个执行顺序就不可控了。

这里主要是想表达,假如你在 onShow 里面的逻辑,会依赖 onLoad 的结果,那么就要避免这个结果是通过异步执行得来的,特别是这个结果比较大(很多属性的对象)的时候,所以这里关键在于异步问题,是不是 this.setData不重要。

至于如何避免,不同场景有不同解决方案,可以留意课程中不同页面模块的实现方法。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信