您的位置:首页 > 移动开发 > 微信开发

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

2018-09-06 07:52 148 查看

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

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

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

思路如下:

在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=>{});并在回调中触发逻辑代码即可,如下:

用户中心页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐