小程序如何在页面显示之前完成数据初始化?
发布于 7 年前 作者 wenjuan 15883 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

在页面显示之前完成数据初始化,onShow()生命周期方法只是在页面显示的时候执行,而并没有等到onShow里面的操作完成才能执行页面上的其他操作.换句话说,onShow()无法保证数据完成初始化才能执行后续操作

  • 希望提供的能力
2 回复

把你需要的异步操作封装成一个个task,用Promise.all。全部准备好才标记执行下一步,比如setData({ready: true})

onLoad是你要的,onShow并不是页面初始化后才执行是页面被激活就开始了,onReady是页面初次渲染完成的回调。

也就是说,如果你数据加载比较缓慢的话,onReady和onShow依然会先执行。

你可以先弄一个静态默认页面,等onLoad里的操作完成后setData的回调来切回你想展示的有数据的页面。

如果是子页面,你可以在上一个页面就把下一个页面的数据提前准备好放到stroage里,子页面直接从缓存里拿,应该快些。

回到顶部