<!--pages/index.wxml-->

<view class='box'>
  <view class='title'>缓存操作</view>
  <!--设置view组件布局方式并添加2个按钮-->
  <view class='btnLayout'>
    <button type='primary' bindtap='setStorage'>异步存储数据</button>
    <button type='primary' bindtap='setStorageSync'>同步存储数据</button>
  </view>
  <!--设置view组件布局方式并添加2个按钮-->
  <view class='btnLayout'>
    <button type='primary' bindtap='getStorage'>异步获取数据</button>
    <button type='primary' bindtap='getStorageSync'>同步获取数据</button>
  </view>
  <!--设置view组件布局方式并添加2个按钮-->
  <view class='btnLayout'>
    <button type='primary' bindtap='getStorageInfo'>异步缓存信息</button>
    <button type='primary' bindtap='getStorageInfoSync'>同步缓存信息</button>
  </view>
  <!--设置view组件布局方式并添加2个按钮-->
  <view class='btnLayout'>
    <button type='primary' bindtap='removeStorage'>异步删除数据 </button>
    <button type='primary' bindtap='removeStorageSync'>同步删除数据</button>
  </view>
  <!--设置view组件布局方式并添加1个text组件-->
  <view class='storageInfo' hidden='{{hidden}}'>
    <text>{{msg}}</text>
  </view>
</view>
/* pages/index.wxss */

page {
  /* 设置页面样式 */
  text-align: center; /* 设置页面中文本的水平对齐方式为居中 */
}

.btnLayout {
  /* 设置button组件的布局 */
  display: flex;
  flex-direction: row;
  justify-content: space-around; /* 设置主轴方向组件的排列方式 */
}

button {
  /* 设置button组件的样式 */
  width: 45%;
  margin: 5px;
}

.storageInfo {
  /* 设置text组件所在区域的布局方式 */
  margin: 20rpx 0; /* 设置上下边距为20rpx,左右边距为0 */
  padding: 20rpx; /* 设置内边距 */
  background-color: #f8f8f8;
  text-align: left;
  border: 1px solid seagreen;
}
// pages/index.js
Page({
  data: {
    msg: '', //设置文本显示的初始信息为空
    hidden: true //案例运行时隐藏文本显示区
  },

  Student: function(id, name, Chinese, Math, English) { //定义类的构造函数
    this.id = id; //将函数参数id(学号)赋值给对象属性id
    this.name = name; //将函数参数name(姓名)赋值给对象属性name
    this.Chinese = Chinese; //将函数参数Chinese(语文成绩)赋值给对象属性Chinese
    this.Math = Math; //将函数参数Math(数学成绩)赋值给对象属性Math
    this.English = English; //将函数参数English(英语成绩)赋值给对象属性English
  },

  loadStudents: function() {//自定义函数
    var Students = new Array(); //创建学生数组
    var stu1 = new this.Student('1', 'TOM', 95, 87, 72); //创建对象实例赋值给stu1
    var stu2 = new this.Student('2', 'Kevin', 75, 97, 79); //创建对象实例赋值给stu2
    Students.push(stu1); //将stu1加入学生数组
    Students.push(stu2); //将stu2加入学生数组
    return Students; //返回学生数组
  },

/////////////////////////////////////////////////////////

  setStorage: function() { //定义异步存储数据的函数
    var that = this
    wx.setStorage({ //调用异步存储数据函数,只有一个对象类型的参数,在该参数当中提供了如下属性和方法
      key: '高一', //本地缓存中指定的 key
      data: this.loadStudents(), //需要存储的内容。
      success: function() {
        that.setData({
          hidden: false, //设置文本区可见
          msg: '异步存储数据成功!' //设置text组件显示的信息
        })
      }
    })
  },

  setStorageSync: function() { //定义同步存储数据的函数
    var that = this;
    wx.setStorageSync('高二', this.loadStudents()); //同步存储数据
    that.setData({
      hidden: false,
      msg: '同步存储数据成功!'
    });
  },

  getStorage: function() { //定义异步获取缓存数据函数
    var that = this;
    wx.getStorage({ //异步获取缓存数据,一旦获取成功,数据就存到res里了
      key: '高一',
      success: function(res) {
        var length = res.data.length; //获取学生数量
        if (length > 1) {
          that.setData({
            hidden: false,
            msg: '异步获取缓存数据成功,学生1为:' +
              '\n学号:' + res.data[length - 2].id +
              '\n姓名:' + res.data[length - 2].name +
              '\n语文成绩:' + res.data[length - 2].Chinese +
              '\n数学成绩:' + res.data[length - 2].Math +
              '\n英语成绩:' + res.data[length - 2].English
          })
          console.log(res.data)
        }
      },
      fail: function() {
        that.setData({
          hidden: false,
          msg: '异步获取缓存数据失败!'
        })
      }
    })
  },

  getStorageSync: function() { //定义同步获取缓存数据的函数
    var that = this;
    try {
      var value = wx.getStorageSync('高二'); //同步获取缓存数据,异步获取第一个学生数据,同步获取第二个学生数据
      var length = value.length;
      if (length > 1) {
        that.setData({
          hidden: false,
          msg: '同步获取缓存数据成功,学生2为:' +
            '\n学号:' + value[length - 1].id +
            '\n姓名:' + value[length - 1].name +
            '\n语文成绩:' + value[length - 1].Chinese +
            '\n数学成绩:' + value[length - 1].Math +
            '\n英语成绩:' + value[length - 1].English
        })
        console.log(value);
      }
    } catch (e) {
      that.setData({
        hidden: false,
        msg: '同步获取缓存数据失败!'
      })
      console.log(e);
    }
  },

  getStorageInfo: function() { //定义异步获取缓存信息的函数
    var that = this;
    wx.getStorageInfo({ //异步获取缓存信息
      success: function(res) {
        that.setData({
          hidden: false,
          msg: '异步获取缓存信息成功!' +
            '\n已使用空间:' + res.currentSize +
            '\n最大空间为:' + res.limitSize
        })
        console.log(res)
      },
      fail: function() {
        that.setData({
          hidden: false,
          msg: '异步获取缓存信息失败!'
        })
      }
    })
  },

  getStorageInfoSync: function() { //定义同步获取缓存信息的函数,同步的话出现意外都是通过try..catch..执行代码
    var that = this;
    try {
      var res = wx.getStorageInfoSync() //同步获取缓存信息
      that.setData({
        hidden: false,
        msg: '同步获取缓存信息成功!' +
          '\n已使用空间:' + res.currentSize +
          '\n最大空间为:' + res.limitSize
      })
      console.log(res)
    } catch (e) { //发生异常时的处理
      that.setData({
        hidden: false,
        msg: '同步获取缓存信息失败!'
      })
      console.log(e)
    }
  },

  removeStorage: function() { //异步删除缓存数据
    var that = this;
    wx.removeStorage({ //异步删除缓存数据
      key: '高一',
      success: function(res) {
        that.setData({
          hidden: false,
          msg: '异步删除缓存数据成功!'
        })
        console.log(res.data)
      },
      fail: function() {
        that.setData({
          hidden: false,
          msg: '异步删除缓存数据失败!'
        })
      }
    })
  },

  removeStorageSync: function() { //定义同步删除缓存数据函数
    var that = this;
    try {
      wx.removeStorageSync('高二'); //同步删除缓存数据
      that.setData({
        hidden: false,
        msg: '同步删除缓存数据成功!'
      })
    } catch (e) { //发生异常时的处理
      that.setData({
        hidden: false,
        msg: '同步删除缓存数据失败!'
      })
      console.log(e)
    }
  }
})

\n换行

 

 

 

 

 

 

 

利用API函数实现对数据缓 存的操作,包括同步和异步缓存数据、获取 缓 存数据及其信息、删除缓存数据等操作

异步和同步缓存数据

异步和同步获取缓存数据

异步和同步获取缓存信息

异步和同步删除缓存数据

异步和同步清空缓存

 

异步缓存数据

wx.setStorage(Object object)

用于将数据存储在本地缓存中指定的 key 中。

数据存储生命周期跟小程序本身一致。

单个 key 允许存储的最大数据长度为 1MB, 所有数据存储上限为 10MB。

属性 必填 说明
key 本地缓存中指定的 key
data 需要存储的内容
success 接口调用成功的回调函数
fail 接口调用失败的回调函数
complete 接口调用结束的回调函数

 

 

 

  

  

  

  

 同步缓存数据

wx.setStorageSync(string key, any data) 是 wx.setStorage()的同步版本。参数key为本地缓存 中指定的key,data为需要存储的内容。

异步和同步获取缓存数据

wx.getStorage(Object object)。从本地缓存中异步 获取指定 key 的内容。

any wx.getStorageSync(string key)。wx.getStorage() 的同步版本,参数 key表示本地缓存中指定的 key, 函 数返回值为key对应的内容。

异步获取缓存信息

wx.getStorageInfo(Object object)用于异步获取当前 缓存信息。其参数属性包括success回调函数,该回调函 数的参数属性如下:

属性 说明 
keys 当前 storage 中所有的 key
currentSize 当前占用的空间大小, 单位 KB
limitSize 限制的空间大小,单位 KB

 

 

 

 

     

异步和同步删除缓存数据

wx.removeStorage(Object object)用于异步删除本地 缓存中指定key对应的数据。

wx.removeStorageSync(string key)用于同步删除本地 缓存中指定key对应的数据。

异步和同步清空缓存

wx.clearStorage(Object object)用于清空本地数据缓存。

wx.clearStorageSync()是wx.clearStorage() 的同步版本