欢迎光临,了解微信小程序开发,就上易用通!

小程序极速实战开发《二十八》wx.storage数据缓存

发布:2018-01-25 16:20浏览: 来源:网络 作者:tianshu

接口说明:

即通过调用接口

  1. wx.setStorage(wx.setStorageSync)
  2. wx.getStorage(wx.getStorageSync)
  3. wx.removeStorage (wx.removeStorageSync)
  4. wx.clearStorage(wx.clearStorageSync)
  5. wx.getStorageInfo(wx.getStorageInfoSync)

对每个微信小程序的本地缓存(localStorage)进行增删改查的操作。目前本地缓存最大空间限制在10MB以内(从原先的5MB升级到10MB,意味着这不是最终大小,可能更改),同时,本地缓存将是永久存储的,不会随着用户的退出而清除,所以不建议将关键信息全部存在 localStorage,以防用户换设备的情况

同步方法会堵塞当前任务,直到同步方法处理返回。
异步方法不会塞当前任务。

故:如果异步存数据后立刻取数据代码段,则会出现取出空值,但缓存中却已有数据,当再一次取数据的时候又能成功取出的现象。这是因为异步执行不影响程序的执行,当执行取缓存数据的时候,数据还未及时存入到缓存中,因此取出空值,当再次取数据时,已有足够的时间让之前的数据存入缓存,因此取值正确。

同步、异步的使用场景:当存储过程不影响数据的展示使用异步已节省各方面的时间,相反情况则使用同步以保证程序业务逻辑的正确

 

接口用法:


小程序极速实战开发《二十八》wx.storage数据缓存(图1)



 

wxml

  1. <view class="container">
  2. <button hover-class="but-hover" bindtap="sync">同步存储后获取data1</button>
  3. <button hover-class="but-hover" bindtap="asyn">异步存储后获取data2</button>
  4. <button hover-class="but-hover" bindtap="update">修改缓存data1</button>
  5. <button hover-class="but-hover" bindtap="del_one">删除缓存data1</button>
  6. <button hover-class="but-hover" bindtap="del_all">删除所有缓存数据</button>
  7.   <text>data1:{{data1}}</text> 
  8.   <text>data2:{{data2}}</text> 
  9.   <text>当前缓存信息:
  10. {{det}}</text> 
  11. </view>

js

  1. var app = getApp()
  2. Page({
  3.   data:{
  4.     data1:"",
  5.     data2:"",
  6.     det:""
  7.   },
  8.   onLoad:function(options){
  9.     // 页面初始化获取缓存的数据
  10.     var that=this;
  11.     this.setData({
  12.       data1: wx.getStorageSync('data1')||null,
  13.       data2: wx.getStorageSync('data2')||null
  14.     })
  15.     //获取最新的缓存信息
  16.     this.see()
  17.   },
  18.   sync:function(){
  19.     // 同步存储后获取数据
  20.     var that=this;
  21.     wx.setStorageSync('data1','value1')
  22.     wx.getStorage({
  23.       key: 'data1',
  24.       success: function(res){
  25.         that.setData({
  26.           data1: wx.getStorageSync('data1')||null,
  27.           data2: wx.getStorageSync('data2')||null
  28.         })
  29.       }
  30.     })
  31.     this.see()
  32.   },
  33.   asyn:function(){
  34.     // 异步存储后获取数据
  35.     var that=this;
  36.     wx.setStorage({
  37.       key: 'data2',
  38.       data: 'value2',
  39.       success: function(res){
  40.         // success
  41.         console.log('success')
  42.       }
  43.     })
  44.     that.setData({
  45.       data1: wx.getStorageSync('data1')||null,
  46.       data2:wx.getStorageSync('data2')||null
  47.     })
  48.     this.see()
  49.   },
  50.   update:function(){
  51.     // 修改缓存data1
  52.     wx.setStorageSync('data1','new_value1')
  53.     this.setData({
  54.       data1: wx.getStorageSync('data1')||null,
  55.       data2: wx.getStorageSync('data2')||null
  56.     })
  57.     this.see()
  58.   },
  59.   del_one:function(){
  60.     // 删除一条缓存数据
  61.     wx.removeStorageSync('data1')
  62.     this.setData({
  63.       data1: wx.getStorageSync('data1')||null,
  64.       data2: wx.getStorageSync('data2')||null
  65.     })
  66.     this.see()
  67.   },
  68.   del_all:function(){
  69.     wx.clearStorageSync()
  70.     this.setData({
  71.       data1: wx.getStorageSync('data1')||null,
  72.       data2: wx.getStorageSync('data2')||null
  73.     })
  74.     this.see()
  75.   },
  76.   see:function(){
  77.     // 查看缓存信息
  78.     var that=this;
  79.     wx.getStorageInfo({
  80.       success: function(res) {
  81.         that.setData({
  82.           det:'缓存中存在的key:'+res.keys+
  83.           '
  84. 已缓存的数据大小:'+res.currentSize+'kb
  85. '+
  86.           '缓存限制的大小:'+res.currentSize+'kb'
  87.         })
  88.       }
  89.     })
  90.   }
  91. })

wxss

  1. page{
  2.   height: 100%;
  3.   width:100%;
  4. }
  5. .container{
  6.   display: flex;
  7.   flex-direction: column;
  8.   align-items: center;
  9. }
  10. button{
  11.   width:500rpx;
  12.   margin: 10rpx 0;
  13. }
  14. .but-hover{
  15.   background-color: #5CB85C;
  16. }
  17.  

主要属性:

所有异步方法的参数皆是对象,故异步方法都有共同参数


参数
类型
必填
说明
success Function 接口调用的回调函数,res = {data: key对应的内容}
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

特殊参数说明:

wx.setStorage(OBJECT)、wx.getStorageSync(KEY)
wx.removeStorage(OBJECT)、wx.removeStorageSync(KEY)


参数
类型
必填
说明
key String 本地缓存中的指定的 key

wx.getStorageInfo(OBJECT) 的success返回参数说明


参数
类型
说明
keys String Array 当前storage中所有的key
currentSize Number 当前占用的空间大小, 单位kb
limitSize Number 限制的空间大小,单位kb

(注:wx.getStorageInfoSync是同步获取故没有success参数)

wx.clearStorage()
清理本地数据缓存。

wx.clearStorageSync()
同步清理本地数据缓存





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。