微信小程序如何实现在登录完成后才触发业务逻辑

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 08:11   11   0

在小程序中,登录需要通过按钮才能触发了,那么在登录完成前(授权登录后逻辑登录),是不应该触发涉及用户的逻辑代码的,比如说没登录的情况下,用户中心页面应该不触发请求的。

解决方案可以自己封装底部导航栏,没有登录即不显示其他页面;也可以在进入页面的时候先判断是登录,登录了再触发逻辑。

相比于第二种,第一种麻烦很多,所以这里介绍第二种,登录后在触发逻辑。

思路如下:

在app.js中实现两个方法,一个方法是授权登录获取用户信息authorize,一个方法是判断是否已经登录waitLogin。在第二个方法waitLogin中,定时判断是否已经登录,如果登录了就返回确定标志。
为什么要是定时判断呢,如果不是定时判断,只触发一次判断,远远没有实现登录后立马触发逻辑代码的功能。


代码如下:

const Request = require("/utils/request");

App({

onLaunch: function(options) {

this.authorize(options.query);

},

authorize: function(share) {

//登录并获取用户信息,最后保存到缓存和globalData中

},


globalData: {

sessionid: "",

userInfo: {},

userLevel:{}

},

/**

* 等待登录完成

*/

waitLogin: function() {

let promise = new Promise((resolve, reject) => {

let timer = setInterval(() => {

if (this.globalData.sessionid && this.globalData.userInfo.id && this.globalData.userLevel.id && this.globalData.isIOS !== undefined) {

clearInterval(timer);

resolve(this.globalData);

} else {

//todo 信息构建中

}

}, 250);

});

return promise;

}

})


可以看到waitLogin 方法的重点在于定时和promise,只有在判断已经登录后,才会触发resolve。


需要登录才能触发的逻辑,在页面加载完成时调用getApp().waitLogin().then(data=>{});并在回调中触发逻辑代码即可,如下:

13908708-fe3c983cd502bba9.png
用户中心页面
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP