关于app.js和page.js方法执行顺序

问题:由于OpenId是在app.js的onlaunch方法请求获得。但是由于app.jspage.js是异步执行的,也就说可能当你还没执行完app.js中onlaunch的时候,page.js中的onload已经执行完了,如果你在page的onload中有需要用到openid的话,那就取不到值。

解决办法

if (self.userInfoReadyCallback) {
    self.userInfoReadyCallback(res)
}
wx.login({
        success: function(data) {
          wx.request({
            url:"",
            method:"POST",
            success: function(res) {
              console.log('拉取openid成功', res.data)
              self.globalData.openid = res.data.openid
              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      		  // 所以此处加入 callback 以防止这种情况
              if (self.userInfoReadyCallback) {
                self.userInfoReadyCallback(res)
              }
            },
            fail: function(res) {
              console.log('拉取用户openid失败,将无法正常使用开放接口等服务', res)
            }
          })
        },
        fail: function(err) {
          console.log('wx.login 接口调用失败,将无法正常使用开放接口等服务', err)
        }
      })

注:暂时只发现能用于登陆获取OpenId

posted @ 2020-06-22 17:22  boxJLP  阅读(501)  评论(0)    收藏  举报