小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 当前 Bug 的表现(可附上截图)
我在app.js中的onlaunch事件中,调用了wx.login方法,去获取用户的openid,保存在globalData里面。然后想在页面(例如Index)的onload事件中使用这个openid。但获取不到。
- 预期表现
我希望在页面的onload事件中能拿到这个openid
我理解wx.login是一个异步方法,那有什么方式在页面中知道它已经调用完成呢?
- 复现路径
- 提供一个最简复现 Demo
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
用定时器解决,呵呵
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
看下这个库,完美解决这种异步问题https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
app.js
onLaunch:
function
() {
wx.login({
...继续请求自己服务端生成token,保存到客户端
})
}
page.js(首页加载到页面)
onLoad:
let interval = setInterval(() => {
if
(wx.getStorageSync(
'token'
)) {
// 判断已经有token了
clearInterval(interval)
// 清理定时器
...wx.request()...
// 继续业务请求
}, 50)
遇到同样问题,wx.login后返回数据,首页要依据返回的数据做判断。
目前的解决方式:在首页onLoad中获取数据,后存储到app.globalData中,如果只是获取数据可以这样;如果涉及登录页,要跳转,体验不好。
试了一下,也可以在app.js中,获取数据后,使用wx.setStorageSync存储到本地。
楼主这个问题解决了吗?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
用定时器解决,呵呵
看下这个库,完美解决这种异步问题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存储到本地。
楼主这个问题解决了吗?