遇到的问题:app.js onlaunch的异步调用导致结果比page的onload的调用慢,场景:小程序在onlaunch中通过openid判断用户是否存在,但是在返回结果之前,user页面的onload先调用的全局变量。
解决办法:在onload的调用结果为空时,执行一次全局方法。
app.js
App({
globalData:{
userInfo:null
},
onLaunch:function(){
let that = this
wx.cloud.init({
env: '环境ID'
});
wx.cloud.callFunction({
name:'check_user'
})
.then(res=>{
//此处给全局变量userInfo赋值
that.globalData.userInfo = res.userInfo
//此处为如果page的onload在onlaunch之前执行拿不到数据时,声明一个全局的方法
if (this.userInfoCallback){
this.userInfoCallback(res.userInfo);
}
})
.catch(error=>{
console.log(error)
})
}
})
index.js
const app = getApp()
Page({
data:{
userInfo:'',
isLogin:'',
},
onload:function(){
if(app.globalData.userInfo && app.globalData.userInfo!==''){
this.setData({
userInfo:app.globalData.userInfo
})
}else{
app.userInfoCallback= (userInfo)=>{
if(typeof userInfo === 'undefined'){
this.setData({
isLogin:false
})
}else{
this.setData({
userInfo:app.globalData.userInfo,
isLogin:true
})
}
}
}
}
})
版权声明:本文为uglyduckling0412原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。