app.globalData出现错误?
发布于 7 年前 作者 jie06 14845 次浏览 来自 官方Issues

反正我也不知道是个什么情况……

代码如下,也就是微信小程序默认的启示界面的代码稍改了一下

onLoad: function (options) {
    console.log(app.globalData)
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
      setTimeout(function(res){
        wx.switchTab({
          url: '/pages/My/MyPage/MyPage',
        })
      },2000)
    } else if (this.data.canIUse) {
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    }
  },

app.js

onLaunch: function () {
  // 检查是否更新
  this.checkForUpdate()
  // 展示本地存储能力
  var logs = wx.getStorageSync('logs') || []
  logs.unshift(Date.now())
  wx.setStorageSync('logs', logs)
 
  
  // 获取用户信息
  wx.getSetting({
    success: res => {
      if (res.authSetting['scope.userInfo']) {
        // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
        wx.getUserInfo({
          success: res => {
            // 可以将 res 发送给后台解码出 unionId
            console.log(res.userInfo)
            this.globalData.userInfo = res.userInfo
            // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (this.userInfoReadyCallback) {
              this.userInfoReadyCallback(res)
            }
          }
        })
      }
    }
  })
 
},
3 回复

代码的同异步问题~控制台打印的是当时加载的数据,当点击查看的时候,已经是更新的数据了。

let obj = {a:null}
setTimeout(()=>{
    obj.a = 1
},100)
console.log(obj)

你看看 和你情况是不是一样的

回到顶部