【微信小程序】-- 使用 npm 包 - API Promise化(四十二)

news/2024/7/20 3:33:22 标签: 微信小程序, npm, 小程序

请添加图片描述

  • 💌 所属专栏:【小程序>微信小程序开发教程】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、API Promise化
      • 1、基于回调函数的异步 API 的缺点
      • 2、什么是 API Promise 化
      • 3、实现 API Promise 化
      • 4、调用 Promise 化之后的异步 API
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【小程序>微信小程序开发教程】专栏的第42篇文章;
  今天开始学习小程序>微信小程序的第23天💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
  专栏地址:【小程序>微信小程序开发教程】, 此专栏是我是夜阑的狗小程序>微信小程序开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、API Promise化

  前面已经介绍了使用 npm 包 - Vant Weapp,通过栗子学习了如何安装 Vant 组件库和使用方式,以及定制全局主题样式。接下来就来讲解一下另外一个使用 npm 包 - API Promise化。话不多说,让我们原文再续,书接上回吧。

请添加图片描述

1、基于回调函数的异步 API 的缺点

  默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方
式调用:

    wx.request({
      url: '',
      method: '',
      data:{},
      success: (res) => {},
      fail:() => {},
      complete: () => {}
    })

  当这种异步 API 使用多的时候,就会容易造成回调地狱的问题,代码的可读性、维护性差!

2、什么是 API Promise 化

  API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。

3、实现 API Promise 化

  在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。它的安装和使用步骤如下:

  • 安装

npm install --save miniprogram-api-promise@1.0.4

  这里指定的安装版本是1.0.4,建议安装环境都要一致,不然版本不同可能会出现一些错误。

在这里插入图片描述

  注意:小程序在这里不同,每次安装完 npm 都需要构建一次才能使用。每次重新构建为了防止出现不必要的错误,j建议都要把文件夹 miniprogram_npm 删除再构建。

在这里插入图片描述

  • 使用

  在小程序 app.js 中,只需调用一次 promisifyAll() 方法,promisifyAll(wx, wxp)将 wx 上所有基于回调函数的 API promisi 化并挂载到 wxp 上。

app.js

import {promisifyAll} from 'miniprogram-api-promise'

const wxp = wx.p = {}

promisifyAll(wx, wxp)

4、调用 Promise 化之后的异步 API

  接下来就通过栗子来调用 Promise 化之后的异步 API,具体代码如下:

message.wxml

  定义按钮事件。

<van-button type="primary">van按钮</van-button>
<van-button type="danger" bindtap="getInfo">按钮2</van-button>

message.js

  定义对应的 tap 事件处理函数,调用方法返回是 promise 对象,可以使用用 asyncawait 进行优化。

Page({
  // 使用 async 和 await 对函数进行优化
  async getInfo(){
  	// 将 res 解构成 data
    const {data : res} = await wx.p.request({
      method:'GET',
      url: 'https://www.escook.cn/api/get',
      data: {name: '我是夜兰的狗', age: 20}
    });

    console.log(res);
  },
})

  编译完成点击按钮 2 就可以看调试面板打印出对应的数据,可以来看一下运行效果:

在这里插入图片描述


总结

  感谢观看,这里就是使用 npm 包 - API Promise化的介绍使用,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🚝 【Java Web项目构建过程】
  • 💛 小程序>微信小程序开发教程】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!


http://www.niftyadmin.cn/n/154359.html

相关文章

ChatGPT背后有哪些关键技术?CSIG企业行带你一探究竟

目录1 ChatGPT的时代2 CSIG企业行3 议题&嘉宾介绍3.1 对生成式人工智能的思考3.2 对话式大型语言模型研究3.3 文档图像处理中的底层视觉技术4 观看入口1 ChatGPT的时代 2015年&#xff0c;马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始…

LoadRunner——SLA服务水平协议设置(十三)

{SLA服务水平协议设置&#xff1a;} 全称&#xff1a; service level agreement 作用&#xff1a; 在性能测试过程中&#xff0c;提前设定性能测试的目标和要度量的性能指标&#xff0c; 工作原理&#xff1a; 在性能测试过程中LR会收集和保存性能的相关数据&#xff0c;在分…

Linux-用户以及用户组讲解

用户以及用户组讲解 简单的用户说明 Linux的操作系统是一个多用户管理的系统&#xff1b; 因此经常使用组的概念来管理用户&#xff1b; Linux是用用户ID来识别的&#xff1b; root&#xff1a;超级管理员–>ID为0系统用户&#xff1a;–>ID号为1-1000普通用户&…

业务中台技术选型

BX的业务中台用的是 Dubbo再封装技术 业务组件&#xff1a;配置中心&#xff0c;安全中心&#xff0c;消息中心&#xff0c;任务中心&#xff0c;流程中心&#xff0c;规则中心 技术组件&#xff1a; 前端&#xff08;iPlatUI&#xff09;&#xff1a;布局组件&#xff0c;导…

Baklib——企业知识库搭建的轻松工具

在当今信息化时代&#xff0c;企业的发展离不开知识的积累和传承。而随着企业规模的扩大和业务范围的增加&#xff0c;知识的管理和传递也变得越来越复杂。为了解决这一问题&#xff0c;搭建一个高效的企业知识库显得尤为重要。而Baklib作为一款在线搭建企业知识库的工具&#…

深度盘点!ChatGPT 还能这么用?

开放隐私计算ChatGPT能干什么&#xff1f;你脑海中第一个想到的是不是“聊天”&#xff1f;但其实聊天只是我们和他交互的形式&#xff0c;他能干的事儿我们可以分为“基础组件”和“组合套件”。先看“基础组件”。图源网络一共有49项“基础组件”&#xff01;从最常规也是我们…

专利实例详解

大家好,我是英子老师。作为一名知识产权专家,深耕于专利行业十余年,具有丰富的专利工作经验:曾在大型专利代理机构从事专利代理工作、专利质检工作(抽查代理机构的专利代理人的撰写质量并评分);之后在知名上市企业、行业龙头企业担任高级专利工程师的职位,主要工作内容…

我的CSDN四周年创作纪念日

机缘 记得还是上大一时候初次注册了CSDN&#xff0c;和很多大学生用这个网站的目的一样&#xff1a;搜寻能够实现老师布置的作业的代码&#xff0c;甚至是搜xxx管理系统然后改一改用来做课程设计。 后来大学毕业工作了&#xff0c;工作中也会记录遇到的问题和解决方案以及总结…