美文网首页小程序
微信小程序:userInfoReadyCallback介绍

微信小程序:userInfoReadyCallback介绍

作者: 精神病患者link常 | 来源:发表于2018-05-09 15:45 被阅读2620次
    wx.getUserInfo({
          success: res => {
            console.log('getUserInfo success:', res);
    
            // 可以将 res 发送给后台解码出 unionId
            this.globalData.userInfo = res.userInfo
    
            // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (this.userInfoReadyCallback) {
              this.userInfoReadyCallback(res)
            }
          }
        })
    

    page.onload

    if (app.globalData.userInfo){
          this.setData({
            userInfo: app.globalData.userInfo
          })
        }
    
    // 给app.js 定义一个方法。
     app.userInfoReadyCallback = res =>{
          console.log('userInfoReadyCallback: ', res);
          console.log('获取用户信息成功');
          this.setData({
            userInfo: res
          })
        };
    

    this.userInfoReadyCallback,这个方法是在page.onload中定义的。

    判断page.onload 中是否定义了this.userInfoReadyCallback

    ❗️注:因为wx.getUserInfo是异步的,不知道异步先执行完毕还是page.onload先执行完毕

    1. 方法如果定义了,则说明page.onload比当前方法运行的早(page已经完成初始化),app的globalData还没有数据,通过此回调可以及时的刷新数据

    2. 方法如果没有定义,则说明page.onload比当前方法运行的晚(page还没有初始化),app的globalData是有值的,可以在page.onload中取globalData里面的值

    相关文章

      网友评论

      • wrjow:没听懂你在讲什么
      • 杉杉_c0ae:小白,请教一下,index.js中定义了回调函数,可函数中“this.setData({userInfo: res.userInfo}) ”可以写入globleData里面的userInfo?在app.js中其他地方,是用等号赋值的啊.
        精神病患者link常:你说的是这个么?if (app.globalData){
        this.setData({
        userInfo: app.globalData.userInfo
        })
        }
        我好像写错了。应该是if(app.globalData.userInfo)

      本文标题:微信小程序:userInfoReadyCallback介绍

      本文链接:https://www.haomeiwen.com/subject/tdtorftx.html