微信小程序入门与实战之缓存机制与异步API的async和awai

这篇具有很好参考价值的文章主要介绍了微信小程序入门与实战之缓存机制与异步API的async和awai。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

app.js的作用和意义

App.js写逻辑内容,内置有函数,有三大作用

1、判断用户以什么方式进入小程序
2、获取用户信息
3、定义全局数据

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。

// app.js
App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide () {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  globalData: 'I am global data'
})

app.js中保存全局变量

在app.js中设置全局变量:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

在具体页面的js文件中获取全局变量并打印:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

小程序缓存的增删查改与清除

    wx.setStorageSync('flag',true)//增加缓存
    wx.setStorageSync('flag', false)//修改缓存
    wx.setStorageSync('flag1', 1)
    //wx.clearStorageSync() 清除所有缓存
    //wx.removeStorageSync('flag') 删除缓存
    const flag=wx.getStorageSync('flag1')
    console.log(flag)

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
在调试器的storage中我们可以查看到当前小程序的缓存
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
我们在开发工具中也可以直接清除缓存:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

异步函数的几个方案:回调函数、promise与await

回调函数:

    const flag=wx.getStorage({
      key:'flag',
      success(value)
      {
        console.log(value.data)
      }
    })

promise:

    const flag=wx.getStorage({
      key:'flag',
    })
    flag.then((value)=>{
      console.log(value)
    })

await(这里我们写在onload函数里,需要在onload函数名前加async):

    const flag=await wx.getStorage({
      key:'flag',
    })
     console.log(flag)

文章收藏

文章详情页编译模式我们设置启动参数可以显示出具体的页面
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
我们为具体的文章的收藏图片设置点击事件:

 <image bind:tap="onCollect"src="/images/collection-anti.png"></image>

在界面的onload的函数中我们通过options参数拿到传递过来的pid,为了使不同函数之可以共享pid,在data里面创建一个pid:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
javascript对象的修改:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
收藏图标的点击事件里进行缓存:

  onCollect(event)
  {
    //假设 未收藏->收藏
    //哪篇文章被收藏
    //数据结构 多篇文章是否被收藏
    const posts_collected={}
    posts_collected[this.data._pid]=true
    wx.setStorageSync('posts_collected', posts_collected)
  },

收藏与未收藏(图标)的切换,要改变UI状态要进行数据绑定(用条件渲染):
页面初始数据设置未被收藏:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
收藏图标点击事件中数据绑定:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
wxml代码中使用条件渲染:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
但是按照我们上面的实现方式,在每次刷新页面的时候文章都会变成未收藏,所以我们初始化的时候要从缓存中读取:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

缓存如何不被覆盖

若文章收藏情况没有被缓存,我们还从缓存中获取这时候获取到的就是undefined,undefined默认是false,完善逻辑可以加个判断:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
但是我们前面写的代码还是有问题,我们在点击事件中创建了一个postCollected,所以每次点击事件都会在缓存中覆盖这一个:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
解决办法:把postCollected在data中设置,在初始化函数中获取到缓存,在点击事件中直接使用获取到的缓存,而不是重新创建:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
完善代码,使已收藏时点击可以变成未收藏:
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

showToast接口的应用

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

showToast换成showModal

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

showModal的回调函数和promise

wx.showModal({
  title: '提示',
  content: '这是一个模态弹窗',
  success (res) {
    if (res.confirm) {
      console.log('用户点击确定')
    } else if (res.cancel) {
      console.log('用户点击取消')
    }
  }
})

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript

showActionSheet的使用

微信小程序 async,微信小程序入门与实战,微信小程序,缓存,javascript
为分享图标设置点击事件:文章来源地址https://www.toymoban.com/news/detail-524074.html

  onShare()
  {
      wx.showActionSheet({
        itemList: ['分享到QQ','分享到微信','分享到朋友圈'],
        success(res)
        {
          console.log(res)
        }
      })
  }

到了这里,关于微信小程序入门与实战之缓存机制与异步API的async和awai的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序开发入门与实战 ①(初始微信小程序)

    @作者 : SYFStrive   @博客首页 : HomePage 📜: 微信小程序 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 微信小程序专栏🔗 💃: 感谢支持,学累了可以先看小段由小胖给大家带来的街舞😀 🔗: 阅读文章 👉 微信小程序 (🔥)

    2024年02月09日
    浏览(111)
  • 假期学习资源:微信小程序入门到实战课(8门课)

    微信小程序框架的制作视频教程免费下载(黄菊华老师大学毕业设计辅导课) 链接: https://pan.baidu.com/s/1iXb5FH3rIys6dXu_4VphXg?pwd=wk7e 提取码: wk7e 微信小程序语法入门到精通视频教程免费下载(黄菊华老师大学毕业设计辅导课) 链接: https://pan.baidu.com/s/1Gva5mFWqZAxcghlrcGBf3Q?pwd=xffs 提取

    2024年02月13日
    浏览(42)
  • 微信小程序入门与实战之rpx响应式单位与flex布局

    小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。 一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: app.json必须有一个pages数组: 一个小程序页面由四个文件组成,分别是: 注意:为了方便开发者减少配置项,描述页面的四个文件必须具有

    2024年02月03日
    浏览(39)
  • 微信小程序——解决异步问题

    在小程序中,异步请求通常是通过使用微信小程序提供的API来实现的,最常见的是使用wx.request()函数来发送异步网络请求。解决小程序的异步请求问题通常涉及以下几个方面: 在微信小程序中,异步问题可能会对程序的执行顺序和数据更新产生影响。以下是几个与异步相关的

    2024年02月05日
    浏览(39)
  • 微信小程序异步请求数据promise方法

    在小程序中可以直接使用promise,我们需要做的就是在A函数中返回一个promise,在返回的promise中再进行获取数据的操作,把成功获取到的数据传入resolve中,把失败的结果传入reject,然后在B函数中调用A函数,调用后再使用.then 和 .catch 分别对成功和失败的结果进行处理

    2024年02月06日
    浏览(46)
  • 微信小程序异步请求数据 parmise方法

    在小程序中可以直接使用promise,我们需要做的就是在A函数中返回一个promise,在返回的promise中再进行获取数据的操作,把成功获取到的数据传入resolve中,把失败的结果传入reject,然后在B函数中调用A函数,调用后再使用.then 和 .catch 分别对成功和失败的结果进行处理  

    2024年02月12日
    浏览(41)
  • 【Web实战】零基础微信小程序逆向(非常详细)从零基础入门到精通,看完这一篇就够了

    本文以微信小程序为例,从实战入手,讲解有关于小程序这种新型攻击面的渗透,对于了解小程序的安全性和防范措施有一定的帮助。 作为中国特有的一种程序形态,小程序在我们的日常生活中已经无处不在。腾讯、百度、阿里巴巴、字节跳动、京东等各家互联网大厂都有各

    2024年02月04日
    浏览(64)
  • 微信小程序清理缓存

    大小:{ {currentSize}} KB 清除缓存 Page({ data: { currentSize: 0, //当前占用的空间大小, 单位 KB limitSize: 0, //限制的空间大小,单位 KB keys: [], //当前 storage 中所有的 key isClearing: false, isSuccess: false, percent: 0, }); progress{ width: 80%; } button { background-color: #007AFF; color: white; border: none; border-radi

    2024年02月03日
    浏览(37)
  • 微信小程序的数据缓存

    当我们做 微信小程序开发的时候,我们经常要与后台打交道,做一些数据缓存的工作 用到的方法为 wx.setStorage wx.getStorage wx.clearStorage   第一步:存储数据 首先我们要定义初始化的值 默认为空  js中 然后利用input标签为其绑定一个bindinput属性 方法就是key值和data值改变的方法

    2024年02月07日
    浏览(33)
  • 微信小程序——异步请求使用async/await实现同步

            在小程序的开发中,我们知道网络请求wx.requset是一个异步请求的API,当我们使用它时,会出现请求还没有结束,我们下面写的处理数据的代码就已经执行了从而导致了我们写的程序出现问题,那么我们该怎么解决这个问题呢?今天我们用async/await来实现一下吧。

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包