小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 需求的场景描述(希望解决的问题)
在页面显示之前完成数据初始化,onShow()生命周期方法只是在页面显示的时候执行,而并没有等到onShow里面的操作完成才能执行页面上的其他操作.换句话说,onShow()无法保证数据完成初始化才能执行后续操作
- 希望提供的能力
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
把你需要的异步操作封装成一个个task,用Promise.all。全部准备好才标记执行下一步,比如setData({ready: true})
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
onLoad是你要的,onShow并不是页面初始化后才执行是页面被激活就开始了,onReady是页面初次渲染完成的回调。
也就是说,如果你数据加载比较缓慢的话,onReady和onShow依然会先执行。
你可以先弄一个静态默认页面,等onLoad里的操作完成后setData的回调来切回你想展示的有数据的页面。
如果是子页面,你可以在上一个页面就把下一个页面的数据提前准备好放到stroage里,子页面直接从缓存里拿,应该快些。
但是onLoad只会加载一次
你先封装一个getData的函数,在别处和onLoad里调用不就完了
onLoad:
function
(){
this
.getData()
},
getData:
//拿数据 加载
}
onUserTap:
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
把你需要的异步操作封装成一个个task,用Promise.all。全部准备好才标记执行下一步,比如setData({ready: true})
onLoad是你要的,onShow并不是页面初始化后才执行是页面被激活就开始了,onReady是页面初次渲染完成的回调。
也就是说,如果你数据加载比较缓慢的话,onReady和onShow依然会先执行。
你可以先弄一个静态默认页面,等onLoad里的操作完成后setData的回调来切回你想展示的有数据的页面。
如果是子页面,你可以在上一个页面就把下一个页面的数据提前准备好放到stroage里,子页面直接从缓存里拿,应该快些。
但是onLoad只会加载一次
你先封装一个getData的函数,在别处和onLoad里调用不就完了
onLoad:
function
(){
this
.getData()
},
getData:
function
(){
//拿数据 加载
}
onUserTap:
function
(){
this
.getData()
}