收藏
回答

小程序如何在页面显示之前完成数据初始化?

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 需求 客户端 6.7.3 2.3

- 需求的场景描述(希望解决的问题)

在页面显示之前完成数据初始化,onShow()生命周期方法只是在页面显示的时候执行,而并没有等到onShow里面的操作完成才能执行页面上的其他操作.换句话说,onShow()无法保证数据完成初始化才能执行后续操作

- 希望提供的能力


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

2 个回答

  • 悦宝宝
    悦宝宝
    2018-12-04

    把你需要的异步操作封装成一个个task,用Promise.all。全部准备好才标记执行下一步,比如setData({ready: true})

    2018-12-04
    赞同
    回复
  • 再见,电脑崽
    再见,电脑崽
    2018-12-04

    onLoad是你要的,onShow并不是页面初始化后才执行是页面被激活就开始了,onReady是页面初次渲染完成的回调。

    也就是说,如果你数据加载比较缓慢的话,onReady和onShow依然会先执行。

    你可以先弄一个静态默认页面,等onLoad里的操作完成后setData的回调来切回你想展示的有数据的页面。


    如果是子页面,你可以在上一个页面就把下一个页面的数据提前准备好放到stroage里,子页面直接从缓存里拿,应该快些。

    2018-12-04
    赞同
    回复 2
    • kagari
      kagari
      2018-12-04

      但是onLoad只会加载一次

      2018-12-04
      回复
    • 再见,电脑崽
      再见,电脑崽
      2018-12-04回复kagari

      你先封装一个getData的函数,在别处和onLoad里调用不就完了

      onLoad: function(){
          this.getData()
      },
      getData: function(){
          //拿数据 加载
      }
      onUserTap: function(){
          this.getData()
      }


      2018-12-04
      回复