微信小程序开发——使用promise封装异步请求

前言:

有在学vue的网友问如何封装网络请求,这里以正在写的小程序为例,做一个小程序的请求封装。

关于小程序发起 HTTPS 网络请求的Api,详情可以参考官方文档:wx.request(Object object)

如果直接使用官方提供的个Api,那么每次在进行网络请求调用时,我们都要按官方文档上说的那样传递需要设置的请求参数,然后对不同的请求相应结果做不同的处理。但是前端同服务器端的接口请求中有大部分的请求参数以及响应结果处理都是很类似的,也就没有必要对所有请求代码都重新敲敲一遍,那么对原生的网络请求进行封装就有必要了。

网络请求封装:

如果接口比较多,可以创建两个文件,完成网络请求的封装:

1. http.js

 1 /**
 2  * 封装http 请求方法
 3  */
 4 const apiUrl = "https://www.xxx.cn"; //服务器api地址
 5 const http = (params) => {
 6   //返回promise 对象
 7   return new Promise((resolve, reject) => {
 8     wx.request({
 9       url: apiUrl + params.url,//服务器url+参数中携带的接口具体地址
10       data: params.data,//请求参数
11       header: params.header || {
12         "Content-Type": "application/x-www-form-urlencoded"//设置后端需要的常用的格式就好,特殊情况调用的时候单独设置
13       },
14       method: params.method || ‘POST‘,//默认为GET,可以不写,如常用请求格式为POST,可以设置POST为默认请求方式
15       dataType: params.dataType,//返回的数据格式,默认为JSON,特殊格式可以在调用的时候传入参数
16       responseType: params.responseType,//响应的数据类型
17       success: function(res) {
18         //接口访问正常返回数据
19         if (res.statusCode == 200) {
20           //1. 操作成功返回数据,原则上只针对服务器端返回成功的状态(如本例中为000000)
21           if (res.data.retCode == "000000") {
22             resolve(res.data)
23           } else if(params.url == "/order/result" && res.data.retCode == "800020") {//支付结果未知
24             //需要特殊处理的接口,可以单独列出来返回数据
25             resolve(res.data)
26           } else {
27             wx.showToast({
28               icon: "none",
29               title: res.data.retMsg
30             })
31             console.log(res.data)
32           }
33         } else {
34           //2. 操作不成功返回数据,以toast方式弹出响应信息,如后端未格式化非操作成功异常信息,则可以统一定义异常提示
35           var errMsg = res.data.message
36           errorToast();
37           console.log(res.data)
38         }
39       },
40       fail: function(e) {
41         errorToast();
42         reject(e)
43       }
44     })
45   })
46 }
47 module.exports = {
48   http: http
49 }

注:上边代码中已经注释比较详细了,就不再赘述了。

2. api.js

 1 import {
 2   http
 3 } from ‘../utils/util.js‘
 4
 5 var url = {
 6   userLogin: "/user/login",
 7   getUserPhone: "/user/phone",
 8   ...
 9   userCardReceive: "/card/receive"
10 }
11 module.exports = {
12   userLogin(code) {
13     return http({
14       url: url.userLogin,
15       data: { code: code},
16       header: {
17         "Content-Type": "application/x-www-form-urlencoded"
18       }
19     })
20   },
21   getUserPhone(params) {
22     return http({
23       url: url.getUserPhone,
24       data: params
25     })
26   },
27   ...
28   userCardReceive() {
29     return http({
30       url: url.userCardReceive,
31       method:"GET"
32     })
33   },
34 }

注:以函数封装请求,并以回调函数的方式返回请求结果。具体参数可根据需要单独设置。

调用方式:

1       http.getUserPhone(params).then(data => {
2         if (data) {
3             //返回结果的处理逻辑
4             ...
5         }
6       })        

个人原创博客,转载请注明来源地址:https://www.cnblogs.com/xyyt/p/9715367.html

原文地址:https://www.cnblogs.com/xyyt/p/9715367.html

时间: 2024-10-19 21:44:34

微信小程序开发——使用promise封装异步请求的相关文章

如何入门微信小程序开发

最近微信开发小程序挺火的,自己选择了腾讯云官方推出的相册. 先下载: 破解版IDE下载地址,以及使用说明: http://download.csdn.net/detail/richard_jason/9660819 http://download.csdn.net/detail/richard_jason/9660821 这里由于csdn有上传大小限制,所以只能做两次上传了.要放在一起看哦. 安装步骤 一个步骤都不能错哦 1.安装0.7 - 扫码登陆 - 关闭0.7 2.安装0.9 --不要启动

微信小程序开发日记——高仿知乎日报(上)

本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教程分为以下三篇 微信小程序开发日记--高仿知乎日报(上) 微信小程序开发日记--高仿知乎日报(中) 微信小程序开发日记--高仿知乎日报(下) 三篇分别讲不同的组件和功能块 这篇要讲 API分析 启动页 轮播图 日报列表 浮动按钮 侧滑菜单 API分析 以下是使用到的具体API,更加详细参数和返回结

微信小程序开发工具使用与设计规范(二)

上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 >>>微信小程序开发工具使用 下载安装小程序 下载 :微信web开发者工具 下载:官方DEMO源码 本系列教程使用的是mac版的开发者工具. 安装完成后,打开微信web开发者工具 1.扫码登录,绑定个人微信 2.扫码登录后,新建或导入已有项目(这里使用官方提供的DEMO源码quickstart) 3.新建项目,导入刚下载的quic

微信小程序开发之视频播放器 弹幕 弹幕颜色自定义

把录音的模块尝试过之后就想着微信小程序的视频播放会不会更有趣? 果然,微信小程序视频自带弹幕.是不是很爽,跟我一起来看看. 微信小程序开发之录音机 音频播放 动画 (真机可用) 先上gif: 再上几张图: 1.视频播放器 2.选择弹幕颜色 3.弹幕来了... 1.视频播放器 微信已经封装的非常好.我这里只用了很简单的几个属性 由于以前没做过弹幕,看到danmu-list就激动了.而且只需要将弹幕内容加入集合即可. 弹幕列表的元素: { text: '第 1s 出现的红色弹幕',//文本 colo

金华兰溪义乌永康东阳微信小程序开发公司 天玑一号旺铺微信小程序

小公司开发自己的微信小程序是非常有必要的,下面上海微信小程序开发公司天玑[一号旺铺]就给大家说说开发自己的微信小程序会给大家带来什么好处.天玑金华.兰溪.义乌.永康.东阳微信小程序开发公司 天玑一号旺铺微信小程序开发报价咨询:http://www.wangpu1.com/全国免费热线:15058525901(微信同号) 小程序一定是基于 Html5+微信原生能力 的产品形态无需下载安装说明跟 App Store 的 APP 是不一样的,小程序是嵌在微信 APP 内的,微信提供标准化入口,当用户订

微信小程序开发入门与实践

基础知识---- MINA 框架 为方便微信小程序开发,微信为小程序提供了 MINA 框架,这套框架集成了大量的原生组件以及 API.通过这套框架,我们可以方便快捷的完成相关的小程序开发工作. MINA 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,因此我们主要聚焦于数据与逻辑上. 响应的数据绑定 框架的核心是一个响应的数据绑定系统. 整个系统分为两块:视图层(View)和逻辑层(App Ser

微信小程序开发-蓝牙功能开发

0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数据帧格式的定义,当然这部分就不是本次博客的重点.1. 准备硬件 这里我准备了CH341SER这个作为USB转串口.用sscom5.13.1 串口工具.由于我不太懂硬件开发.硬件部分都是由公司其他人开发的.我只是负责把环境搭建起来.然后负责我的微信小程序开发. 2. 开发小程序简单讲解 onLoad

Java微信小程序开发_00_资源帖

1.微信小程序开发:http://blog.csdn.net/column/details/13721.html?&page=1 2.微信小程序栏目:http://blog.csdn.net/column/details/14653.html?&page=2 3.

微信小程序开发心得

微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司认证信息如,营业执照等 再次就是用一个未曾开通过公众号的QQ号或微信号来注册一个微信小程序号. 最后,下载微信小程序开发工具. 由于这里,我们更多的关注如何去开发一些app,而不是科谱微信小程序,故在此不在过多的解释,详细的说明,可以去官网帮助文档. 首先,我们拿自己的项目在一步一步的说明并开发吧,