微信小程序开发系列(三十)·小程序本地存储API·同步和异步的区别

本文讲解了微信小程序中关于同步API(如存储和获取数据的getStorageSync和setStorageSync)和异步API(如setStorage和getStorage)的使用方法,以及它们在性能上的差异。
摘要由CSDN通过智能技术生成

目录

1.  同步API

1.1  getStorageSync存储API

1.2  removeStorageSync获取数据API

1.3  removeStorageSync删除

1.4  clearStorageSync清空

2.  异步API

2.1  setStorage存储API

2.2  getStorage获取数据API

2.3  removeStorage删除API

2.4  clearStorage清空

3.  同步和异步的区别 


1.  同步API

        小程序本地存储是指在小程序中使用API将数据存储在用户的设备上,以便小程序运行时和下次启动时快速地读取这些数据。

注意事项:对象类型的数据,可以直接进行存储获取,无需使用 JSON.stringify()、JSON.parse()转换。

        找到cate.wxml文件,注释或者删除之前内容,创建四个按钮:

<button size="mini" type="primary">存储</button>
<button size="mini" type="default">获取</button>
<button size="mini" type="primary">删除</button>
<button size="mini" type="warn">清空</button>

        此时按钮之间过于拥挤,我们可以找到cate.scss文件,给按键之间添加空隙:

button{
  margin: 34rpx;
}

        再次返回cate.wxml文件,给四个按钮添加事件:

<button size="mini" type="primary" bind:tap="setStorage">存储</button>
<button size="mini" type="default" bind:tap="getStorage">获取</button>
<button size="mini" type="primary" bind:tap="removeStorage">删除</button>
<button size="mini" type="warn" bind:tap="clearStorage">清空</button>

        找到cate.js文件,编写一个事件框架:

Page({
  // 将数据存储到本地
  setStorage(){

  },

  // 获取本地存储的数据
  getStorage(){

  },

  // 删除本地存储的数据
  removeStorage(){

  },

  // 清空本地存储的全部数据
  clearStorage(){

  }
})

1.1  getStorageSync存储API

        将以上代码setStorage()内容给改为:

  // 将数据存储到本地
  setStorage(){

    // 第一个参数:本地存储中指定的key
    // 第二个参数:需要存储的数据
    wx.setStorageSync('num',1)

    // 在小程序中如果存储的是对象类型的数据,可以直接进行存储获取,无需使用 JSON.stringify()、JSON.parse()转换
    wx.setStorageSync('obj', { name:'tom', age: 10 })
  },

        点击存储,会发现数据正常存储:

1.2  removeStorageSync获取数据API

        将getStorage()代码更改为:

  // 获取本地存储的数据
  getStorage(){

    // 从本地存储的数据中获取指定 key 的数据、内容
    // wx.getStorageSync('num')
    // wx.getStorageSync('obj')

    // 创建变量用于接收数据
    const num = wx.getStorageSync('num')
    const obj = wx.getStorageSync('obj')

    // 打印数据
    console.log(num)
    console.log(obj)
  },

        点击“获取”,可以看到在consle中打印出了获取到的数据:

注意:在这里我们会发现我们没有点存储,但是也能获取到数据,那是因为编译器本身存储的之前的数据,我们可以清空之前的数据,这样就可以了: 

1.3  removeStorageSync删除

        将removeStorage()的函数更改为:

  // 删除本地存储的数据
  removeStorage(){

    // 从本地移除指定key的数据内容
    wx.removeStorageSync('num')
  },

        点击删除:

1.4  clearStorageSync清空

        将clearStorage()更改为:

  // 清空本地存储的全部数据
  clearStorage(){
    wx.clearStorageSync()
  }

        点击清空,数据全部清空:


同步API完整Page代码:

Page({
  // 将数据存储到本地
  setStorage(){

    // 第一个参数:本地存储中指定的key
    // 第二个参数:需要存储的数据
    wx.setStorageSync('num',1)

    // 在小程序中如果存储的是对象类型的数据,可以直接进行存储获取,无需使用 JSON.stringify()、JSON.parse()转换
    wx.setStorageSync('obj', { name:'tom', age: 10 })
  },

  // 获取本地存储的数据
  getStorage(){

    // 从本地存储的数据中获取指定 key 的数据、内容
    // wx.getStorageSync('num')
    // wx.getStorageSync('obj')

    // 创建变量用于接收数据
    const num = wx.getStorageSync('num')
    const obj = wx.getStorageSync('obj')

    // 打印数据
    console.log(num)
    console.log(obj)
  },

  // 删除本地存储的数据
  removeStorage(){

    // 从本地移除指定key的数据内容
    wx.removeStorageSync('num')
  },

  // 清空本地存储的全部数据
  clearStorage(){
    wx.clearStorageSync()
  }
})

2.  异步API

2.1  setStorage存储API

        将setStorage()中的代码改为:

  // 将数据存储到本地
  setStorage(){

  wx.setStorage({
    key: 'num',
    data:1
  })

  wx.setStorage({
    key: 'obj',
    data: { name: 'jerry',age: 18}
  })
  },

        点击存储:

2.2  getStorage获取数据API

        将getStorage()更改为:

  // 获取本地存储的数据
  async getStorage(){
    const obj = await wx.getStorage({
      key:'obj'
    })
    console.log(obj)
  },

        点击获取:

        我们可以看到此时数据在data内,则可以更改代码:

  // 获取本地存储的数据
  async getStorage(){
    const { data } = await wx.getStorage({
      key:'obj'
    })
    console.log(data)
  },

        点击获取:

2.3  removeStorage删除API

        将removeStorage()更改为:

  // 删除本地存储的数据
  removeStorage(){
    wx.removeStorage({
      key:'num'
    })
  },

        点击删除:

2.4  clearStorage清空

         将clearStorage()更改为:

  // 清空本地存储的全部数据
  clearStorage(){
    wx.clearStorage()
  }

        点击清空:

3.  同步和异步的区别 

        小程序本地存储 API 提供了同步和异步两种方式进行数据的读写操作。它们的主要区别在于执行操作时是否会阻塞主线程

同步方式:在使用同步方式进行本地存储操作时,代码会阻塞主线程的执行,直到本地存储操作完成后才会继续执行后续代码。这意味着如果存储操作需要较长时间,会导致界面出现卡顿现象,影响用户体验。 

异步方式:在使用异步方式进行本地存储操作时,代码会立即返回,不会阻塞主线程的执行,而是通过回调函数或 Promise 来处理存储操作的结果。这样可以避免阻塞主线程,提高程序的流畅性和响应速度。

微信小程序开发_时光の尘的博客-CSDN博客

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值