小程序
小游戏
企业微信
微信支付
扫描小程序码分享
在app.js中登录后把sessionid存放到storage里,然后在message.js中获取storage并且存放到data中,但在onReady中使用this.data.sessionid时,大部分情况下是能获取到值的,但有一定概率值为空,求解。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
网络请求还没返回结果,你的load就执行了,网络请求是有波动的,你可以在message.js中写个setInterval循环,每次100ms,然后设计个计数,如果达到多少次还没取到就停止接下去的请求,那如果获取到了,也要停止循环,然后继续执行。还有,请使用wx.setStorageSync()同步接口
var GetSessionid = setInterval(function () {
var sessionid = wx.setStorageSync("sessionid ")
if(!empty(sessionid)){
if (!(typeof (GetSessionid) == "undefined")) {
clearInterval(GetSessionid)
}
}, 100)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
这是我加console的结果,看起来像是load方法先执行了,所以获取不到data.sessionid ? 但setData是在onLoad里写的,在onReady里使用的,按理说应该是先执行onLoad再执行onReady吧。(不过这种情况很少见,大多数是可以正常获取的)
涉及到网络请求的都有异步延迟
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
网络请求还没返回结果,你的load就执行了,网络请求是有波动的,你可以在message.js中写个setInterval循环,每次100ms,然后设计个计数,如果达到多少次还没取到就停止接下去的请求,那如果获取到了,也要停止循环,然后继续执行。还有,请使用wx.setStorageSync()同步接口
var GetSessionid = setInterval(function () {
var sessionid = wx.setStorageSync("sessionid ")
if(!empty(sessionid)){
if (!(typeof (GetSessionid) == "undefined")) {
clearInterval(GetSessionid)
}
}
}, 100)
这是我加console的结果,看起来像是load方法先执行了,所以获取不到data.sessionid ? 但setData是在onLoad里写的,在onReady里使用的,按理说应该是先执行onLoad再执行onReady吧。(不过这种情况很少见,大多数是可以正常获取的)
涉及到网络请求的都有异步延迟