关于全局变量的问题
发布于 6 年前 作者 taoqin 7183 次浏览 来自 问答

onLaunch: function () {

wx.getSetting({

      success: res => {

        if (res.authSetting[‘scope.userInfo’]) {

          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框

          wx.getUserInfo({

            success: res => {

              // 可以将 res 发送给后台解码出 unionId

              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

              // 所以此处加入 callback 以防止这种情况

              if (this.userInfoReadyCallback) {

                this.userInfoReadyCallback(res)

              }

            }

          })

        }

      }

    })

}

globalData: {

   userInfo: null,

  }

这里用

if (this.userInfoReadyCallback) {

                this.userInfoReadyCallback(res)

              }

处理了,在别的页面的onLoand用app.globalData.userInfo取到的还是null,用

console.log查看打印顺序仍然是先执行onLoand的,请问怎么解决。

3 回复

生命周期函数只是触发,不会等待

请注意处理异步的时序问题。如果不能解决,建议贴出较完整的代码。

刚才用app.golablData.usreInfo又能拿到了,前面一直不行,试着试着又突然可以了,而且只能在别的页面拿到,首页就拿不到,首页只能用

app.userInfoReadyCallback = res => {

        console.log('查看得到的数据:', res)

      }

拿到,而这个方法在别的页面又无效。我真是越来越搞不懂了

回到顶部