举个例子:
比如onLoad里面的操作是发送用户登录信息,然后onShow是获取用户的一些数值,页面每次切换,不管是navigatorTo还是back都要读取一次用户数值,那么这个读取函数是放在onShow里面的,但是并不需要页面每次切换都需要发送用户登录信息。所以登录函数和获取函数是分别放在onLoad和onShow里面的。
1、即onLoad函数里面有个获取openid的异步函数
2、onShow函数里面有个依赖于onLoad获取到的openid发起另一个请求
但是onLoad往往还没执行完,就开始了onShow的操作,但这个时候openid是空的。
请问解决办法有哪些?
如果用Promise来解决的话,如何实现跨onLoad和onShow函数?
这个库可以解决类似问题,你在app.onLaunch里去获取openid存在globalData里,然后在页面里这么用onShowlogin: https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
onLoad:
function
() {
this
.getOpenId((openid) => {
this
.load()
this
.show()
})
},
onShow:
function
() {
this
.getOpenId(()=> {
this
.show()
})
},
getOpenId:
function
(callback) {
if (app.globalData.openid) {
callback && callback(openid)
} else {
fetch().then((openid) => {
app.globalData.openid = openid
callback && callback(openid)
})
}
},
load:
function
() {},
show:
function
() {},
再加上阻止同时运行的判断就差不多可以了