微信小程序API之数据缓存

微信小程序框架提供丰富的微信原生API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。
本文主要说明数据缓存

每个微信小程序都可以有自己的本地缓存

在进行ajax请求时
可以通过
wx.setStorage(异步本地存储数据)、
wx.setStorageSync(同步本地存储数据)、
wx.getStorage(异步使用本地数据)、
wx.getStorageSync(同步使用本地数据)、
wx.clearStorage(异步清理本地数据缓存)
wx.clearStorageSync(同步清理本地数据缓存)
对本地缓存进行设置、获取和清理。同一个微信用户,同一个小程序 storage 上限为 10MB。

wx.setStorage(OBJECT)

将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。

OBJECT参数说明:

参数 类型 必填 说明
key String 本地缓存中的指定的 key
data Object/String 需要存储的内容
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

wx.setStorage({
  key:"key",
  data:"value"
})

wx.setStorageSync(KEY,DATA)

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

参数说明:

参数 类型 必填 说明
key String 本地缓存中的指定的 key
data Object/String 需要存储的内容

示例代码

try {
    wx.setStorageSync('key', 'value')
} catch (e) {    
}

wx.getStorage(OBJECT)

从本地缓存中异步获取指定 key 对应的内容。

OBJECT参数说明:

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

success返回参数说明:

参数 类型 说明
data String key对应的内容

示例代码:

wx.getStorage({
  key: 'key',
  success: function(res) {
      console.log(res.data)
  } 
})

wx.getStorageSync(KEY)

从本地缓存中同步获取指定 key 对应的内容。

参数说明:

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

代码示例&解析

wx.showNavigationBarLoading();导航条加载动画
wx.showLoading({ title: '玩命加载中', mask: true })界面加载动画,title加载动画的提示语mask透明蒙层,防止触摸穿透
let data1 = wx.getStorageSync("hotMovie");把存储到本地的数据异步赋值给data1,方便后续使用

onLoad: function() { 
    wx.showNavigationBarLoading();
    wx.showLoading({
      title: '玩命加载中',
      mask: true
    })
    var that = this;
    let data1 = wx.getStorageSync("hotMovie");
    if(data1){//判断data1是否有数据,若有直接that.setData({ })定义
      wx.hideNavigationBarLoading();
      wx.hideLoading();
      // console.log(res);
      that.setData({
        imgUrls: data1.slice(0, 2),
        imgkey: data1.slice(0, 2),
        info: data1.slice(0, 2),
        file: data1.slice(0, 2)
      })
    }else{//若无
      wx.request({//进行ajax请求
        url: 'https://www.easy-mock.com/mock/5b28c8793f9f7c0b22426dce/example/hotmovie',
        success(res) {
          wx.setStorage({//将请求成功的数据异步存储到本地
            key: 'hotMovie',
            data: res.data.subjects
          })
        }
      });
    };
  }

使用if(){}else{}判断并且将数据存储到本地的优点,使小程序把请求到的数据存储到本地,然后进行判断,有数据则不再请求,无数据则请求一次,存储到本地即可用户体验度更高,界面无需刷新即可获取数据,操作更流畅

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,898评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,939评论 8 265
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,054评论 3 119
  • 一场国际的球,一场曼联的球,场上的针对性,团结一致,千差万别~
    leo_s阅读 3,130评论 1 3
  • 很多时候我们需要知道用户当前使用的是什么系统,甚至是系统的版本号(比如MIUI V7、V8)来进一步处理业务逻辑,...
    SupLuo阅读 18,659评论 2 54

友情链接更多精彩内容