微信小程序获取openid异步问题 有时候获取不到问题

微信小程序获取openid异步问题 有时候获取不到问题,第1张

获取 openid 我是直接使用小程序函数中的login函数,在开发中,我是直接写在主页面的js中,很多函数都需要openid的值,有时候能获取到,有时候又不行,调试之后发现是获取getopenid的函数是异步,不能通过 onLoad() 方法直接获取,当onload函数启动后,下面直接顺序执行,openid还没获取到,下面的函数已经在执行了,这指明就是异步问题了。

我们雹逗烂要在 APP.js 中调用获源漏取 openid 云函数

记得上次接小程序的项目已经是去年10月份了,隔了大半年,再次捡起来,这感觉,跟当初刚刚写的时候差不多。

先放个官方链接: https://developers.weixin.qq.com/miniprogram/dev/

参考文章

微信小程序实现watch属性监听数据变化 https://blog.csdn.net/xuyangxinlei/article/details/81408200

原因:app.js里的onLaunch(异步)方法调用得到数据的速度比页面Page中的onLoad慢,导致在加载index.wxml时openid总是为空

解决办法:采用Promise

app.js

index.wxml的onLoad方法

原因:跟上一个问题差不多

解决办法:监听userInfo值的变化,获取到后再调用需要userInfo作为参数的请求

watch.js文件获取地址: https://github.com/xyxl1997/watch

index.js

情形:

login.wxml小程序认证页,获取用户授权

index.wxml(tabbar)小程序首页

登陆小程序时,已授权用户默认到index页面,否则重定向到login页面,判断在app.js文件onLaunch中

问题:当在认证页面中点击授权后,跳转到index页面时,无法进入到onLoad中(之前问题已经说过,openid,userInfo都要在onLoad中才能得到),而onShow中迟锋放入 watch.setWatcher(this, that.getPageUserInfo()) 没有效果,而且,即使能获取到,也需要手动刷新一下,否则值都为空

解码源晌决办法:不用 wx.switchTab ,使用 wx.reLaunch (关闭应用内所有页面,打开指定页面),因为 wx.reLaunch 可以携带参数

login.js

index.js

以上问题获取还有更好裂源的办法的解决,勿喷,感谢。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12388607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存