收藏
回答

wx.navigateBack之后,onLoad中请求获取的数据无法显示

问题模块
API和组件

请教各位前辈及管理员。

微信小程序wx.navigateTo一个新页面后,在这个页面的表单中填写数据并发送后台存入数据库中以后,紧接着会调用wx.navigateBack返回上一个页面,返回的这个页面中有个方法会向后台发送请求获取数据并显示在页面上,但是无论这个发请求的方法在onLoad还是onShow中调用,数据都无法及时显示在当前页面,获取到数据后我是通过this.setData设置的,这是怎么回事?

但是我点击到其他页面以后再进入这个页面,就能显示出来数据,麻烦解答一下,谢谢!


最后一次编辑于  2017-11-16
回答关注问题邀请回答
收藏

6 个回答

  • 微信技术专员 - Rex
    微信技术专员 - Rex
    2017-11-16

    你在onShow request前打个log就知道时序了, 也看看request返回什么

    2017-11-16
    赞同
    回复
  • Anamecouldberemovedatanytime
    Anamecouldberemovedatanytime
    2018-03-20

    没人回复楼上的问题吗


    2018-03-20
    赞同
    回复
  • 趣途
    趣途
    2017-12-19

    楼主你好,我也遇到了onShow里面setData,在navigateback后可以设置data,但是无法更新页面数据的问题。

    请问你最后是怎么解决的呢?

    2017-12-19
    赞同
    回复
  • natgary
    natgary
    2017-11-16


    小程序里面有这样一段代码,我也不知道是默认就有的还是我当时复制哪里的。

    这代码里面说:

    由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

    所以此处加入 callback 以防止这种情况。

    像这种解决办法如何能运用到我自己的代码中,因为我看

    userInfoReadyCallback

    好像是小程序内置的,因为在任何地方都没定义过这个。



    2017-11-16
    赞同
    回复
  • natgary
    natgary
    2017-11-16




    你好,刚才测试了一下,进入页面后,每个方法都是按顺序执行的。

    首先进入onShow后,调用自定义的方法getAllAddress,然后执行完跳出自定义的方法,然后跳出onShow。

    但是问题好像出在,请求后台成功的回调函数,是在以上全部方法执行完成后才执行的,所以对页面中data的设置也是在onShow之后。

    如果真是这样的话有什么解决办法吗?

    谢谢你了!

    2017-11-16
    赞同
    回复
  • natgary
    natgary
    2017-11-16


    你好,我在onShow中调用了这个方法,也不行,麻烦你看看还有没有其他办法。

    网上说onShow和onLoad这类函数会比wx.request执行的快,所以数据无法及时显示,是这样的吗?

    如果是这样有什么解决方案呢,谢谢。

    2017-11-16
    赞同
    回复