小程序异步获取用户信息问题
发布于 5 年前 作者 xiongwei 19545 次浏览 来自 问答

官方文档里,小程序由于是异步获取userinfo,所以使用了userInfoReadyCallback

但如果在index.js的onLoad方法里,就要通过userInfo获取其他信息的话,

app.userInfoReadyCallback callback方法还没有执行,就会使用到userInfo而报错啊

//app.js

// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {                

    this.userInfoReadyCallback(res)}

//index.js

onLoad: function () {    

if (app.globalData.userInfo) {      

this.setData({

        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else {      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    }
  },

2 回复

是小程序加载的时候需要的……

换思路,不要想着在本页面,在之前 的页面上加载到变量里,传进来就不行了。

回到顶部