app的wx.login 与页面的 onload事件顺序问题
发布于 6 年前 作者 yaoqiang 5358 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

我在app.js中的onlaunch事件中,调用了wx.login方法,去获取用户的openid,保存在globalData里面。然后想在页面(例如Index)的onload事件中使用这个openid。但获取不到。

  • 预期表现

我希望在页面的onload事件中能拿到这个openid

我理解wx.login是一个异步方法,那有什么方式在页面中知道它已经调用完成呢?

  • 复现路径
  • 提供一个最简复现 Demo
4 回复

用定时器解决,呵呵

app.js
onLaunch: function() {
  wx.login({
      ...继续请求自己服务端生成token,保存到客户端
  })
}
 
page.js(首页加载到页面)
onLoad: function() {
    let interval = setInterval(() => {
      if (wx.getStorageSync('token')) { // 判断已经有token了
        clearInterval(interval) // 清理定时器
        ...wx.request()... // 继续业务请求
      }
    }, 50)
}

遇到同样问题,wx.login后返回数据,首页要依据返回的数据做判断。

目前的解决方式:在首页onLoad中获取数据,后存储到app.globalData中,如果只是获取数据可以这样;如果涉及登录页,要跳转,体验不好。

试了一下,也可以在app.js中,获取数据后,使用wx.setStorageSync存储到本地。

楼主这个问题解决了吗?

回到顶部