小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我想知道wx.setStorageSync()和wx.setStorage()的内部细节,很好奇数据是缓存在本机,为什么要设计同步和异步模式。 猜想:我们的本机缓存是否在微信服务器上也保存了一份,所有要实现同步和异步模式?
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
赞同楼主的疑问。本地存取数据在绝大多数语言中都是同步操作,因为失败概率极低,耗时也极少。如果语言本身就是基于异步的,所有操作都是异步的,那么本地存储也是异步的就很正常,整个系统是简单一致的。但是微信这里却单独为本地存储的操作同时提供同步和异步两种操作,就不太正常。如果解释为同步异步各有好处,让开发者自己选用,那么为何不把所有API都设计成同步和异步两个版本?API和用户界面的设计原则一样,都是要尽可能简单和一致,让用户减少选择和思考。提供多种选择并不是最佳的解决方案,只是自己省事,把麻烦丢给用户而已。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
异步存是防止阻塞。
同步取是因为用户登录要本地数据和用户登录账户密码相同要用同步取,如果异步取的话就会发生用户登录的账号密码和本地数据不一致但是还是能登录进去。
个人理解:有于小程序运行环境的问题,即单线程工作模式,所以如果不是下一步必须使用的数据都建议使用异步的方式。同步的意思是这个必须执行完才能才是下一步,异步是两个动作同时进行。看业务设计需要。
异步的是为了encrypt属性啊,开启存储加密,存储加密当然花时间,不会立马缓存数据,如果你不指定加密这两个都是同步的;api文档写的有
666,你不知道nodejs读写文件都是异步的吗,非异步是阻塞的,人家设计两种模式只是为了适应不同场景需求而已,结果被恶意揣测
基本get都用的同步,set都用的异步
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
赞同楼主的疑问。本地存取数据在绝大多数语言中都是同步操作,因为失败概率极低,耗时也极少。如果语言本身就是基于异步的,所有操作都是异步的,那么本地存储也是异步的就很正常,整个系统是简单一致的。但是微信这里却单独为本地存储的操作同时提供同步和异步两种操作,就不太正常。如果解释为同步异步各有好处,让开发者自己选用,那么为何不把所有API都设计成同步和异步两个版本?API和用户界面的设计原则一样,都是要尽可能简单和一致,让用户减少选择和思考。提供多种选择并不是最佳的解决方案,只是自己省事,把麻烦丢给用户而已。
异步存是防止阻塞。
同步取是因为用户登录要本地数据和用户登录账户密码相同要用同步取,如果异步取的话就会发生用户登录的账号密码和本地数据不一致但是还是能登录进去。
个人理解:有于小程序运行环境的问题,即单线程工作模式,所以如果不是下一步必须使用的数据都建议使用异步的方式。同步的意思是这个必须执行完才能才是下一步,异步是两个动作同时进行。看业务设计需要。
异步的是为了encrypt属性啊,开启存储加密,存储加密当然花时间,不会立马缓存数据,如果你不指定加密这两个都是同步的;api文档写的有
666,你不知道nodejs读写文件都是异步的吗,非异步是阻塞的,人家设计两种模式只是为了适应不同场景需求而已,结果被恶意揣测
基本get都用的同步,set都用的异步