当前位置: 首页 > news >正文

【微信小程序】使用 npm 包 - API Promise化-- miniprogram-api-promise

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

默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方式调用:
在这里插入图片描述
缺点:容易造成回调地狱的问题,代码的可读性维护性差

2. 什么是 API Promise 化

在这里插入图片描述

3. 实现 API Promise 化

步骤一.安装包–miniprogram-api-promise

在这里插入图片描述
在这里插入图片描述

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

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

## 步骤二.重新构建- -把文件夹 miniprogram_npm 删除再构建

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

(1) .删除项目中原来构建的miniprogram_npm

在这里插入图片描述

(2).重新构建npm

在这里插入图片描述

为什么需要构建npm

因为小程序里面无法直接读取node_modules,需要构建npm,把node_modules里面的包迁移到 miniprogram_npm

为什么建议删除旧的miniprogram_npm重新构建?

不删除直接构建很容易构建失败

步骤三.在app.js文件中,引入并调用promisifyAll方法

在这里插入图片描述
在这里插入图片描述

import {promisifyAll} from 'miniprogram-api-promise'const wxp = wx.p = {}promisifyAll(wx, wxp)
// console.log(wxp.getSystemInfoSync())

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

pages文件夹下页面的js中,直接用wx.p 调用 Promise 化之后的异步 API
在这里插入图片描述

<!--pages/home/home.wxml-->
<text>pages/home/home.wxml</text><view>Vant组件的使用</view>
<van-button type="primary" class="my-button" style="{{buttonStyle}}" bindtap="setButtonStyle">按钮</van-button>
<van-toast id="van-toast" />
<van-button type="primary" bindtap="getInfo" style="{{buttonStyle}}">getInfo
</van-button>
// pages/home/home.js
import Toast from '@vant/weapp/toast/toast';
Page({/*** 页面的初始数据*/data: {buttonStyle:''},setButtonStyle(){this.setData({buttonStyle:`--button-primary-background-color: #13a7a0;--button-primary-border-color: #2c3131; ` })Toast.loading({message: '加载中...',forbidClick: true,});},async getInfo(){this.setButtonStyle()// console.log(wx.p.request());  //Promise// {data:{data:res}}const {data:{data:res}} = await wx.p.request({url: 'https://applet-base-api-t.itheima.net/api/get',data:{ name:'zs',age:20}})console.log('res',res);}

在这里插入图片描述

{data:{data:res}} 结果:
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 出现Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are requiredProperty报错
  • C语言函数介绍(上)
  • [Qt][QSS][下]详细讲解
  • Makefile简单使用
  • [论文笔记]Improving Retrieval Augmented Language Model with Self-Reasoning
  • 基于神经塑性的地球观测多模态基础模型 (慕尼黑工业大学, TUM)
  • zookeeper集群安装
  • 标配M4芯片!苹果三款Mac新品蓄势待发
  • lucene搜索关键词错误
  • 企业级web应用服务器tomcat
  • 学习前端面试知识(15)
  • 强制输出wParam 和 lParam,会是什么内容?
  • 数据仓库系列 3:数据仓库的主要组成部分有哪些?
  • jmeter中CSV 数据文件设置用例
  • DescuentosController : ControllerBase
  • 2017-08-04 前端日报
  • C语言笔记(第一章:C语言编程)
  • HTTP--网络协议分层,http历史(二)
  • php中curl和soap方式请求服务超时问题
  • python_bomb----数据类型总结
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • quasar-framework cnodejs社区
  • SpriteKit 技巧之添加背景图片
  • 大主子表关联的性能优化方法
  • 经典排序算法及其 Java 实现
  • 容器服务kubernetes弹性伸缩高级用法
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %@ page import=%的用法
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (27)4.8 习题课
  • (3)llvm ir转换过程
  • (6)STL算法之转换
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (独孤九剑)--文件系统
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (三)mysql_MYSQL(三)
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)RocketMQ初步认识
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 设计模式初探
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)