收藏
回答

预拉取数据的疑问?bug?

今天研究了一下预拉取数据,有些疑惑的地方。

  1. 在我的代码包(1M)中使用预加载,在代码包中发出 db.collection返回数据比预加载数据要快。预加载需要调用云函数去获取数据库数据,小程序端直接db反而更快。尤其在要预加载的数据多时(你又不想在一个云函数中多次访问不同数据库集合)那么你就需要在设置的云函数中,分别调用其他的云函数,获取相应的数据,再统一由预设的云函数返回。速度会更慢。这时候的问题就是,你在小程序中的 wx.getBackgroundFetchData会返回错误(data no found),就是说,小程序启动了,但是数据还没回来。只能通过递归等待(有隐患吧)

2 . 经测试,小程序销毁后,这个预加载的缓存数据不会销毁。而下次冷启动设置的预加载函数一样会被调用。如果网络延迟一下,那么就会导致,小程序启动后,获取的不是当次冷启动下的预加载数据,而是上一次预加载的数据。这就不对了。如果再像上面的情况那样,你永远获取的只能是上一次的预加载数据。

问题出在预加载数据的缓存,应该在小程序销毁时一起销毁。

上面测试是在工具上进行的。以上是个人心得,有不对的地方希望大佬指出。感觉现在的预加载不是很舒服。

回答关注问题邀请回答
收藏

2 个回答

  • 佳梨
    佳梨
    2021-08-23

    遇到了同样的问题,调 getBackgroundFetchData 的时间比请求预拉取接口的时间还早,此时返回了上一次预拉取的数据

    2021-08-23
    有用
    回复
  • Mankii'
    Mankii'
    2021-06-29

    真机测过了,一样的问题,预数据拉取云函数,先拿本地缓存,再去调接口获取数据,这个顺序有问题。

    导致的结果就是永远拿的上一次打开小程序时拉取的数据。

    2021-06-29
    有用
    回复 2
    • Zhao ZW
      Zhao ZW
      2021-06-30
      厉害了!
      2021-06-30
      回复
    • 天下无缺
      天下无缺
      2021-08-10
      可以怎么改进呢
      2021-08-10
      回复
登录 后发表内容