采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师, 在onLoad 中存在异步请求函数await this._getService(),所以this._getServie()里面的代码还没执行完时,onShow就已经执行完了,所以 this._checkRole 没有获取到service才导致有BUG。 但我听您的课,说是问题出在 this._getService 函数中的 this.setData({}) 但我感觉,更倾向于前者。正确的情况是怎样呢
onLoad
await this._getService()
this._getServie()
onShow
this._checkRole
service
this._getService
this.setData({})
onLoad() 和onShow() 两个本身没什么必然联系,只不过 onLoad 的执行顺序是在 onShow 之前,仅此而已。
这里会说原因是在 this.setData()是因为 setData 本身是异步的。生命周期函数本身也是异步的,在一个异步里面写异步,这个执行顺序就不可控了。
这里主要是想表达,假如你在 onShow 里面的逻辑,会依赖 onLoad 的结果,那么就要避免这个结果是通过异步执行得来的,特别是这个结果比较大(很多属性的对象)的时候,所以这里关键在于异步问题,是不是 this.setData不重要。
至于如何避免,不同场景有不同解决方案,可以留意课程中不同页面模块的实现方法。
登录后可查看更多问答,登录/注册
千锤百炼的实践分享,成就你独当一面
1.2k 17
910 7
1.0k 3
824 1
1.0k 8