微信小程序promise封装

一. 在utils文件夹内创建一个request.js  写以下封装的 wx.request() 方法

const baseURL = 'https:// +  '域名' '; //公用总路径地址
export const request = (params) => {      //暴露出去一个函数,并且接收一个外部传入的参数let dataObj = params.data || {};   //拿到传递进来的参数let headerObj = {                  //这里 可以添加一些请求头'content-type': 'application/json'}return new Promise((resolve, reject) => {  //通过 Promise 对 wx.request 方法进行异步处理。wx.request({url: baseURL + params.url,      //通过默认的请求地址,再加上外部传入的 具体业务地址,组成一个完整的 请求地址。method: params.method || "GET",   //外部 业务调用请求时,并传入 所需的请求方法,如果没有传递请求方法,则默认为 GET 请求data: dataObj,                  //这里的参数,来自于外部传入的参数header: headerObj,success: res => {if (res.statusCode === 200) {resolve(res);                    // 请求成功后,调用 Promise 的回调 resolve() 方法,将参数返回出去到 Promise 的实例对象身上。wx.showToast({title: "请求成功",icon: "success"})return;} else {wx.showToast({title: "请求失败",icon: "error"})reject(res);    //同样请求失败后,向 Promise 实例返回出 错误的信息}},// fail: err => {//   reject(err)    //同样请求失败后,向 Promise 实例返回出 错误的信息// }})})
}

 二 . 在项目中,新建一个 API文件夹,用来做请求接口 模块化管理,这么做的原因是,虽然我们的请求接口封装了,但是整个项目中,调用接口的地方太多了,如果直接在各自页面中调用,也会显得代码十分的庸杂,所以不同的功能模块接口调用,为了避免混淆在一起,建议将api 请求接口 抽离出去,这样一来,页面的 js 部分就只着重于对发起请求前和请求响应后的数据逻辑处理。

api/index/js

import { request } from "../utils/request";  //导入我们封装的请求方法。//首页请求接口
export const index = (params) => {     //接收页面调用传递过来的参数return request({   //调用请求方法url: "/api/science/index",   //传入请求地址method: "GET",               //传入请求方法data : params                //这里的参数来自于页面调用时,传过来的参数  })
}

三 . 必须配置服务器白域名 必须是https开头的

最后:在页面中,调用上述模块中相应的 api 接口,将参数依次传递过去,同时由于我们的请求方法是采用了 Promise 的方式封装的,所以在页面逻辑调用时,还可以 使用 async 和 await 的方式,将异步代码做同步化处理。

// const { from } = require("form-data");
import {index} from '../../api/index.js';// pages/demos/demos.js
Page({/*** 页面的初始数据*/data: {},async getdatas() {let parameter = {}         //页面中,收集处理好,要传递的参数let data = await index(parameter);console.log(data);//data 身上就可以直接拿到,请求回来的数据。// if (data.statusCode === 200) {//   wx.showToast({//     title: "首页加载成功",//     icon: "success"//   })// }},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getdatas();},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

原创作者:吴小糖

创作时间:2023.12.22

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化生活:数据可视化的力量

数据可视化已经逐渐渗透到我们的日常生活中,并在许多方面为我们提供了便利与启发。它不仅仅是数据的图形展示,更是一种改变我们对信息理解方式的工具。下面我就以可视化从业者的角度出发,简单聊聊如何让数据可视化为我们的生活服务。 首先&am…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#) Baumer工业相机Baumer工业相机通过SDK实现Raw格式的图像保存的技术背景通过SDK获取相机信息的代码分析Baumer工业相机回调函数里保存原始图像数据Baumer保存Raw图像格式重要核心代…

[BackdoorCTF 2023] pwn

一个国外小比赛,还好能下载附件。 Baby Formatter 一连3道格式化字符串,但都不难 有两个菜单,一个是泄露栈地址和libc,另一个是格式化字符串但过滤掉了pudx,好在还有大量可用的符号。比如li 以长整型的方式输出。 …

华为全屋wifi6蜂鸟套装标准

华为政企42 华为政企 目录 上一篇华为安防监控摄像头下一篇华为企业级无线路由器

<JavaEE> 网络编程 -- 网络编程和 Socket 套接字

目录 一、网络编程的概念 1)什么是网络编程? 2)网络编程中的基本概念 1> 收发端 2> 请求和响应 3> 客户端和服务端 二、Socket套接字 1)什么是“套接字”? 2)Socket套接字的概念 3&…

案例135:基于微信小程序的房屋租赁管理系统的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

RIPV1配置实验

查看路由器路由表: 删除手工配置的静态路由项: Route1->Config->static Remove删除路由项 删除Route3的路由项,方法同上删除Route2的路由项,方法同上 完成路由器RIP配置: Route1->Config->RIP->Ne…

软件渗透测试有哪些测试流程?权威安全测试报告的重要性

软件渗透测试也是安全测试的一种,是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。作为网络安全防范的一种新技术,对于网络安全组织具有实际应用价值。 一、软件渗透测试的过程   软件渗透测试的过程通常包括四个主…

使用bs4 分析html文件

首先需要 pip install beautifulsoup4安装 然后为了方便学习此插件,随便打开一个网页,然后鼠标右键,打开源网页,如下图片 这样就可以获得一个网页源码,全选复制粘贴到本地,存储为 .html 文件,…

案例101:基于微信小程序的停车共享小程序

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1:使用Docker搭建LAMP环境实战案例2:使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web,那么,需要先来学习网站的搭建。搭建网站是每一个Web安全学习…

项目中webpack优化配置(1)

项目中webpack优化配置 一. 开发效率, 体验 1. DLL(开发过程中减少构建时间和增加应用程序的性能) 使用 DllPlugin 进行分包,使用 DllReferencePlugin(索引链接) 对 manifest.json 引用,让一些基本不会改动的代码先…

【Java JMM】编译和优化

1 前端编译 在 Java 技术下, “编译期” 是一个比较含糊的表述, 因为它可能指的是 前端编译器 (“编译器的前端” 更准确一些) 把 *.java 文件转变成 *.class 文件的过程Java 虚拟机的即时编译器 (常称 JIT 编译器, Just In Time Compiler) 运行期把字节码转变成本地机器码的过…

Ubuntu 常用命令之 chown 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 chown 命令在 Ubuntu 系统中用于改变文件或目录的所有者和组。这个命令的基本格式是 chown [选项]... [所有者][:[组]] 文件...。 chown 命令的主要参数有 -c 或 --changes:类似 verbose,但只在发生改变时…

【泛型中K T V E? Object等分别代表什么含 义】

✅ 泛型中K T V E? Object等分别代表什么含义 ✅ 典型解析✅代码示例 ✅ 典型解析 E - Element (在集合中使用,因为集合中存放的是元素) T-Type (Java 类) K- Key (键) V - Value (值) N - Number (数值类型) ? - 表示不确定的iava类型 (无限制通配符类型) …

树莓派-Pico控制舵机

目录 前言一、SG90舵机是什么?参数介绍工作原理 二、与舵机信号线的接线图三、给树莓派Pico注入灵魂(代码)总结 前言 这价格便宜的树莓派Pico总觉得应该拿来做点什么,它总不能只用来点亮几个灯就没别的用途了吧,所以就…

自制数据库空洞率清理工具-C版-01-EasyClean-V1.0(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、支持功能 四、空洞率 五、工具流程图 六、安装包下载地址 七、参数介绍 1、命令模板 2、命令样例 3、参数表格 八、安装步骤 1、配置环境变量 2、生效环境变量 3、检验动态链接是否正常 九、运行效果 一、环境信息 名称值CPUInt…

力扣题目学习笔记(OC + Swift)19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 此题目为链表题,拿出我们的杀手锏,链表解题经典三把斧: 哑巴节点栈快慢指针 关于内存问题:由于Swift及…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 先从那些不需要下大力气理解的参数入手: 参数【.envir】:进行万能表达式编译的环境。 参数【.frame】:抛出上下文。默认用于参数【.trace_bottom】&#xff…

【华为鸿蒙系统学习】- HarmonyOS4.0之App项目开发|自学篇

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 创建鸿蒙第一个App项目 项目创建 工程目录区 预览区 运行Hello World 基本工程目录 ws:工…