//onLaunch
wx.cloud.callFunction({
name:'getUser',
success: res => {
this.globalData.openid = res.result.openid
}
})
//onLaunch
wx.cloud.callFunction({
name:'getUser',
success: res => {
this.globalData.openid = res.result.openid;
if(this.indexCallBack){this.indexCallback()};
}
})
//index.js(onLoad)
//app = getApp()
if(app.globalData.openid){
this.setData({
id:app.globalData.openid
})
}
else{
app.indexCallback=data=>{
if(data){
this.setData({
id:data
})
}
}
}
在index.js中获取openid,如果获取失败即app.js中的云函数还没完成,就会定义indexCallback函数,该函数定义为app对象的一个方法,其中的this指向的是index.js这个页面,尽管最后是在app.js中调用。
//index.js(onLoad)
//app = getApp()
//_id是index.js页面定义在Page函数之外的变量
if(app.globalData.openid){
this.setData({
id:app.globalData.openid
})
}
else{
app.indexCallback=function(data){
if(data){
_id = data;
}
}
}
当app.js调用这个函数时,根据作用域链可以访问到_id。