收藏
回答

微信小程序数据缓存,为什么要设计同步和异步模式?

我想知道wx.setStorageSync()和wx.setStorage()的内部细节,很好奇数据是缓存在本机,为什么要设计同步和异步模式。 猜想:我们的本机缓存是否在微信服务器上也保存了一份,所有要实现同步和异步模式?

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

6 个回答

  • 大廖
    大廖
    2020-06-20

    赞同楼主的疑问。本地存取数据在绝大多数语言中都是同步操作,因为失败概率极低,耗时也极少。如果语言本身就是基于异步的,所有操作都是异步的,那么本地存储也是异步的就很正常,整个系统是简单一致的。但是微信这里却单独为本地存储的操作同时提供同步和异步两种操作,就不太正常。如果解释为同步异步各有好处,让开发者自己选用,那么为何不把所有API都设计成同步和异步两个版本?API和用户界面的设计原则一样,都是要尽可能简单和一致,让用户减少选择和思考。提供多种选择并不是最佳的解决方案,只是自己省事,把麻烦丢给用户而已。

    2020-06-20
    有用 3
    回复
  • 不多不少
    不多不少
    2019-11-13

    异步存防止阻塞

    同步取是因为用户登录要本地数据和用户登录账户密码相同要用同步取,如果异步取的话就会发生用户登录的账号密码和本地数据不一致但是还是能登录进去。


    2019-11-13
    有用 3
    回复
  • 百宝先生
    百宝先生
    2019-08-14

    个人理解:有于小程序运行环境的问题,即单线程工作模式,所以如果不是下一步必须使用的数据都建议使用异步的方式。同步的意思是这个必须执行完才能才是下一步,异步是两个动作同时进行。看业务设计需要。

    2019-08-14
    有用 3
    回复 1
    • 王成
      王成
      2019-08-14
      嗯嗯,我觉得你说的很有道理。我现在考虑的问题是,小程序现在PC端内测中,微信是否很早就考虑到要将移动端、PC端缓存同步,所有我猜想可能在微信服务器上也保存了一份缓存。
      2019-08-14
      回复
  • 不停
    不停
    2022-07-21

    异步的是为了encrypt属性啊,开启存储加密,存储加密当然花时间,不会立马缓存数据,如果你不指定加密这两个都是同步的;api文档写的有

    2022-07-21
    有用 1
    回复
  • 香蕉不是笨啦啦
    香蕉不是笨啦啦
    2019-08-14

    666,你不知道nodejs读写文件都是异步的吗,非异步是阻塞的,人家设计两种模式只是为了适应不同场景需求而已,结果被恶意揣测

    2019-08-14
    有用 1
    回复 4
    • 未命名科技
      未命名科技
      2019-08-14
      这个揣测真的是缺乏逻辑而且非常之尴尬了。
      2019-08-14
      1
      回复
    • 王成
      王成
      2019-08-14
      你好! 我确实才疏学浅,但是绝无恶意,只是单纯的技术探讨。请你不要以己度人。
      2019-08-14
      7
      回复
    • 好久不见
      好久不见
      2021-11-05
      没必要这么尖酸刻薄
      2021-11-05
      1
      回复
    • 不停
      不停
      2022-07-21
      就你牛逼,
      2022-07-21
      1
      回复
  • waterfall
    waterfall
    2019-08-14

    基本get都用的同步,set都用的异步

    2019-08-14
    有用
    回复 1
    • 王成
      王成
      2019-08-14
      嗯嗯,我大致也是这样使用的。但是我目前再做的一个项目,用户量还算比较多,而且涉及在线支付,所有我必须把一些技术细节搞清楚,避免程序出现bug。
      2019-08-14
      回复
登录 后发表内容
问题标签