- 当前 Bug 的表现(可附上截图)
我在app.js中的onlaunch事件中,调用了wx.login方法,去获取用户的openid,保存在globalData里面。然后想在页面(例如Index)的onload事件中使用这个openid。但获取不到。
- 预期表现
我希望在页面的onload事件中能拿到这个openid
我理解wx.login是一个异步方法,那有什么方式在页面中知道它已经调用完成呢?
- 复现路径
- 提供一个最简复现 Demo
框架类型 | 问题类型 | API/组件名称 | 终端类型 | 操作系统 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|---|
小程序 | Bug | wx.login | 客户端 | 6.7.1 | 2.0.4 |
5 个回答
用定时器解决,呵呵
看下这个库,完美解决这种异步问题https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
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存储到本地。
楼主这个问题解决了吗?