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

news2024/11/26 0:30:04

目录

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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1511860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt vs 编程 字符编码 程序从源码到编译到显示过程中存在的字符编码

理解字符编码&#xff0c;请参考&#xff1a;unicode ucs2 utf16 utf8 ansi GBK GB2312 CSDN博客 汉字&#xff08;或者说多字节字符&#xff09;的存放需求&#xff0c;是计算机中各种编码问题的最直接原因。如果程序不直接使用汉字&#xff0c;或间接在所有操作步骤中统一使…

Hilt

1.使用Hilt实现快速依赖注入 1.1 导入依赖 //hilt依赖//Hiltimplementation("com.google.dagger:hilt-android:2.44")annotationProcessor("com.google.dagger:hilt-android-compiler:2.44")1.2 在build.gradle(app)中加入插件 plugins {id("com.an…

大规模自动化重构框架--OpenRewrite浅析

目录 1. OpenRewrite是什么&#xff1f;定位&#xff1f; 2. OpenWrite具体如何做&#xff1f; 3. 核心概念释义 3.1 Lossless Semantic Trees (LST) 无损语义树 3.2 访问器&#xff08;Visitors&#xff09; 3.3 配方&#xff08;Recipes&#xff09; 4. 参考链接 Open…

SpringBlade error/list SQL 注入漏洞复现

0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpringBoot 单体式微服务架构并存的综合型项目。 0x02 漏洞概述 SpringBlade 框架后台 /api/blade-log/error/list路径存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数…

Redis应用缓存

目录 前言 关于“二八定律” 使用Redis作为缓存 为什么关系型数据库性能不高 为什么并发量高了就容易宕机 Redis就是一个用来作为数据库缓存的常见方案 缓存更新策略 定期生成 搜索引擎为例 实时生成 淘汰策略 FIFO(First In First Out) 先进先出 lRU(Least …

106. Dockerfile通过多阶段构建减小Golang镜像的大小

我们如何通过引入具有多阶段构建过程的Dockerfiles来减小Golang镜像的大小&#xff1f; 让我们从一个通用的Dockerfile开始&#xff0c;它负责处理基本的事务&#xff0c;如依赖项、构建二进制文件、声明暴露的端口等&#xff0c;以便为Go中的一个非常基础的REST API提供服务。…

YoloV8实战:YoloV8-World应用实战案例

摘要 YOLO-World模型确实是一个突破性的创新&#xff0c;它结合了YOLOv8框架的实时性能与开放式词汇检测的能力&#xff0c;为众多视觉应用提供了前所未有的解决方案。以下是对YOLO-World模型的进一步解读&#xff1a; 模型架构与功能 YOLO-World模型充分利用了YOLOv8框架的…

剑指offer面试题34:在二叉树中和为某一值的路径

面试题34&#xff1a;在二叉树中和为某一值的路径 题目&#xff1a; LCR 153. 二叉树中和为目标值的路径 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路…

C语言 - 各种自定义数据类型

1.结构体 把不同类型的数据组合成一个整体 所占内存长度是各成员所占内存的总和 typedef struct XXX { int a; char b; }txxx; txxx data; typedef struct XXX { int a:1; int b:1; …

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RichText)

富文本组件&#xff0c;解析并显示HTML格式文本。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件无法根据内容自适应设置宽高属性&#xff0c;需要开发者设置显示布局。 子组件 不包含子组…

封装的echarts子组件使用watch监听option失效的问题

项目场景&#xff1a; 我在项目里面封装了一个echarts组件&#xff0c;组件接收一个来自外部的option,然后我用了一个watch函数去监听这个option的变化&#xff0c;option变化之后&#xff0c;销毁&#xff0c;然后再新建一个charts表 碎碎念 问题如标题所示&#xff0c;这篇…

ubuntu 安装 infiniband 和 RoCE 驱动

下载驱动程序 驱动程序地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 安装 安装参考文档 https://docs.nvidia.com/networking/display/mlnxofedv24010331/installing+mlnx_ofed#src-2571322208_InstallingMLNX_OFED-InstallationProced…

十五、计算机视觉-sobel算子

文章目录 前言一、sobel算子的概念二、sobel算子的计算方式三、具体实现 前言 上节课我们学习了梯度的知识&#xff0c;学习了如何去计算梯度&#xff0c;本节我们继续学习计算梯度的方法&#xff0c;本节我们学习使用Sobel算子计算梯度&#xff0c;这与上节课梯度计算方法有所…

Java客户端调用elasticsearch进行深度分页查询 (search_after)

Java客户端调用elasticsearch进行深度分页查询 &#xff08;search_after&#xff09; 一. 代码二. 测试结果 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 具体的Search_after解…

科技回顾,飞凌嵌入式受邀亮相第八届瑞芯微开发者大会「RKDC2024」

2024年3月7日~8日&#xff0c;第八届瑞芯微开发者大会&#xff08;RKDC2024&#xff09;在福州举行&#xff0c;本届大会以“AI芯片AI应用AloT”为主题&#xff0c;邀请各行业的开发者共启数智化未来。 本届大会亮点颇多&#xff0c;不仅有13大芯片应用展示、9场产品和技术论坛…

28 批量归一化【李沐动手学深度学习v2课程笔记】(备注:这一节讲的很迷惑,很乱)

目录 1.批量归一化 1.1训练神经网络时出现的挑战 1.2核心思想 1.3原理 2.批量规范化层 2.1 全连接层 2.2 卷积层 2.3 总结 3. 代码实现 4. 使用批量规范化层的LeNet 5. 简明实现 1.批量归一化 现在主流的卷积神经网络几乎都使用了批量归一化 批量归一化是一种流行且…

面向对象【static关键字】

文章目录 Java中的static关键字1. 静态变量2. 静态方法的特点3. 静态块4. 静态导入5. 单例模式中的应用 Java中的static关键字 在Java中&#xff0c;static是一个关键字&#xff0c;用于定义类级别的成员&#xff0c;这些成员与类的实例无关。static成员属于类而不是类的实例&…

怎么查看电脑是不是固态硬盘?简单几个步骤判断

随着科技的发展&#xff0c;固态硬盘&#xff08;Solid State Drive&#xff0c;简称SSD&#xff09;已成为现代电脑的标配。相较于传统的机械硬盘&#xff0c;固态硬盘在读写速度、稳定性和耐用性等方面都有显著优势。但是&#xff0c;对于不熟悉电脑硬件的用户来说&#xff0…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的水下目标检测系统(深度学习模型+UI界面+训练数据集)

摘要&#xff1a;本研究详述了一种采用深度学习技术的水下目标检测系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地识别水…

唯众物联网+地理科学交付云南师范大学地理学部教学实验室项目

近日&#xff0c;云南师范大学地理学部教学实验室建设项目顺利交付。该项目的成功落地&#xff0c;标志着物联网技术与地理科学教育的深度融合&#xff0c;为云南师范大学的地理教学提供了全新的教学平台与资源。该项目以物联网技术为核心&#xff0c;结合地理科学的特点&#…