wx.setStorage可以将数据缓存在本地指定的key中,如果本地缓存已经存在指定的key,则会覆盖该key对应的内容,这是一个异步的接口,在调用时会涉及到成功,失败,完成三个状态,
与wx.setStorage唯一不同的就是wx.setStorageSync是同步进行的,所以不会涉及到成功,失败,完成等回调,但是在使用时需要使用try.......catch....来捕获异常;
现在编写一个将字符串缓存本地的例子
编译项目,点击缓存按钮:
现在改变缓存的内容,但是缓存的key保持不变
可以看到第二次的内容把第一次覆盖了。
将内容缓存到本地之后,将其从本地提取展示出来,则可是使用微信小程序api提供的两个接口:wx.getStorageInfo(Object object),wx.getStorageSync(string key),与缓存同样,读取缓存也分同步和异步;
我们将刚刚存储到本地的数据展示到页面上:
编译项目,点击按钮获取缓存数据并将其展示到页面上。
完成了本地数据的缓存,获取,则接下来就是关于缓存数据的清除,同样微信小程序api也提供了可使用的接口,
至此微信小程序本地保存数据就此结束!
我们发现,小程序里面大部分API都是异步接口,这根它的双线程模型有很大关系。
以下举一个标准的异步接口 showToast 。
在logic层,我们调用了 showToast 方法:
实际上这接口发到 master 层去处理的:
考虑到我们的接口都是异步回调,在 master 层处理完毕后需要通知回 logic 层:
上面我们看到了一个 msgId,这是各层间传递信息标识的唯一id,而 logic 层还需要处理回调结果,我们完善一下:
在API调用的时候,把自身的回调函数缓存起来,等收到回调的信息时,执行相应的回调,再把缓存删掉。
在一些接口上,也能提供同步的接口,比如: getStorageSync 。
这个比较好理解,因为 localStorage 无论在父级页面或者iframe中都能取到,而且本身也是一个同步方法,所以可以在 master 层和 logic 层都实现一遍。
我们还发现,小程序的 setStorage 比 web 上的 localStorage 似乎可以写入的格式多一些,还支持Date格式类型,方法是通过写入JSON来实现,参照 LocalStorage
上一篇
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)