收藏
回答

data数据有时取不到

在app.js中登录后把sessionid存放到storage里,然后在message.js中获取storage并且存放到data中,但在onReady中使用this.data.sessionid时,大部分情况下是能获取到值的,但有一定概率值为空,求解。


最后一次编辑于  2018-03-05  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

3 个回答

  • 行渐远
    行渐远
    2018-03-05

    涉及到网络请求的都有异步延迟

    2018-03-05
    赞同
    回复
  • 🌱
    🌱
    2018-03-05




    这是我加console的结果,看起来像是load方法先执行了,所以获取不到data.sessionid ? 但setData是在onLoad里写的,在onReady里使用的,按理说应该是先执行onLoad再执行onReady吧。(不过这种情况很少见,大多数是可以正常获取的)

    2018-03-05
    赞同
    回复
  • 行渐远
    行渐远
    2018-03-05

    网络请求还没返回结果,你的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)



    2018-03-05
    赞同
    回复