微信小程序如何监听全局中 globalData的某个属性变化

 我是基于一个场景:

  在app.js中执行登录请求取得身份识别标记,由于时序问题,如何处理其他页面请求时未获取到身份识别标记的情况。(token,userid等)。怎么能够保证其他页面请求是在登录之后

  
 //在app.js中定义一个方法 监听globalData的属性isLog变化
  isLogWatch:function(callBack){
    var obj = this.globalData;
    Object.defineProperty(obj,"isLog", {
      configurable: true,
      enumerable: true,
      set: function (value) {
        // value就是被新赋予的值,通过回调函数,把这值回调出去
        callBack(value);
      },
      get:function(){
      // 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.name的时候,这里就会执行。
        return this._name
      }
    })
  },

//在页面中调用方法,拿到globalData属性 isLog新改变的值
onLoad () {
    // 直接调用app的定义的方法logWatch
    app.isLogWatch(this.watchBack);
  },
  watchBack(newValue){
    //如果新赋予的值为真,表示登录完成,取得登录后的数据
    if(newValue){
      //执行首页发送请求的方法
      this.getData();
    }
  },
  getData() {
    indexData({
      token: app.globalData.token,
    }).then(res => {
      console.log(res)
    }).catch(res => {
      console.log(typeof res)
      app.Tips(res)
    })
  },

更多可参考一个博主的文章https://blog.csdn.net/xuyangxinlei/article/details/81408200

你可能感兴趣的:(微信小程序如何监听全局中 globalData的某个属性变化)