生命周期问题,页面启动无法即时或者先拿到小程序启动时的数据,需要后期或者延时才能拿到
小程序启动
app({
onLaunch(){
服务器获取openid,设置到全局
},
globalData: {
openid: null,
}
})
此时index页面加载
const app = getApp()
Page({
data: {
text: "This is page data."
},
onLoad: function(options) {
console.log(app.globalData.openid)
拿不到数据, 需要用
// Do some initialize when page load.
},
})
是生命周期没有先后顺序吗,
怎么样才能让,保证app(onLaunch())完成后,执行page(onLoad()),我感觉是异步了,没有先后顺序,有时用延时才能拿到数据,你们有好的办法吗
https://developers.weixin.qq.com/s/IN5zkkm77hsa
咋了呢
this.globalData.openid = "abc"
if(this.callbackArray.length) {
let callbackArray = this.callbackArray
this.callbackArray = []
callbackArray.forEach((callback)=>{
if(typeof callback === "function") callback(this.globalData.openid)
})
}
},3000)
代码块里的这部分没动,可以给讲讲吗?
就是有个数组存放所有请求这个数据的回调方法,拿到数据后挨个回调
是异步请求的原因,参考这篇文章:https://segmentfault.com/a/1190000013656710
试试新出炉的库,用完真香定律https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
app(onLaunch()),在小程序初始化的时候,无法保障执行完,再进行page(onLoad()),如果把小程序最小化,再打开,就能发现app内的函数都执行完了,但是大多数用户都是首次打开,或者隔了好长时间才再次代开,这个时候小程序可能已经销毁,最好有一个方法,要早于所有生命周期之前那就好了。
回调也是一种解决方法,可以满足我的需求,感谢。