官方流程图
解决方案
登录逻辑
在app.js中定义全局方法:
- login() 用于整套登录流程
- checkLogin() 用于检测缓存中是否有用户信息,并且与后台进行验证用户登录状态
登录状态保持
登录后将服务端sessionId返回给客户端,并且储存在缓存中。
异步解决方案
给全局函数加入回调参数,callback,在完成异步操作后调用回调函数。可以解决异步操作和Page Onload执行顺序不确定的问题。
方式一:
app.js
// 调用回调函数
if (this.userLoginSuccessCallback) {
this.userLoginSuccessCallback(this.globalData)
}
page.js
app.userLoginSuccessCallback = res => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
方式二:
app.js
a: function(callback){
wx.xxx({
success:res=>{
......
callback();
}
});
}
page.js
const app = getApp();
app.a(this.callback);
callback:function(){
setData({
"key":app.globalData.value,
});
}