收藏
回答

app的wx.login 与页面的 onload事件顺序问题

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.login 客户端 6.7.1 2.0.4

- 当前 Bug 的表现(可附上截图)

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


- 预期表现

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

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


- 复现路径


- 提供一个最简复现 Demo


回答关注问题邀请回答
收藏

5 个回答

  • 陈希章
    陈希章
    2018-08-08

    用定时器解决,呵呵

    2018-08-08
    有用 2
    回复
  • Api调用师
    Api调用师
    2022-03-11

    看下这个库,完美解决这种异步问题https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013

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


    2018-08-23
    有用 1
    回复
  • 車句
    車句
    2018-09-12

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


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


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

    2018-09-12
    有用
    回复
  • 冰是沉默的水
    冰是沉默的水
    2018-08-06

    楼主这个问题解决了吗?

    2018-08-06
    有用
    回复
登录 后发表内容