使用Promise封装小程序wx.request的实现方法


Posted in Javascript onNovember 13, 2019

因为业务需要,每个http请求都要加上一个请求头,所以每次都要写很多重复的代码。

现在尝试把wx.request简单的封装了一下,调用一个request方法,每次请求自动携带header头信息,这样就省事多了,包含了常见的get post put delete 四种请求方法,支持Promise方式调用。

封装代码

class request {
 constructor() {
  this._baseUrl = 'https://xxx.com/api';
  this._token = wx.getStorageSync('token');
  this._header = {'Authorization': 'Bearer ' + token}
 }

 /**
  * GET类型的网络请求
  */
 getRequest(url, data, header = this._header) {
  return this.requestAll(url, data, header, 'GET')
 }

 /**
  * DELETE类型的网络请求
  */
 deleteRequest(url, data, header = this._header) {
  return this.requestAll(url, data, header, 'DELETE')
 }

 /**
  * PUT类型的网络请求
  */
 putRequest(url, data, header = this._header) {
  return this.requestAll(url, data, header, 'PUT')
 }

 /**
  * POST类型的网络请求
  */
 postRequest(url, data, header = this._header) {
  return this.requestAll(url, data, header, 'POST')
 }

 /**
  * 网络请求
  */
 requestAll(url, data, header, method) {
  return new Promise((resolve, reject) => {
   wx.request({
    url: this._baseUrl + url,
    data: data,
    header: header,
    method: method,
    success: (res => {
     if (res.statusCode === 200) {
      //200: 服务端业务处理正常结束
      resolve(res)
     } else {
      //其它错误,提示用户错误信息
      reject(res)
     }
    }),
    fail: (res => {
     reject(res)
    })
   })
  })
 }
}

export default request

使用方法

在app.js中引入:

import request from './request.js'
App({
 myRequest(){
  return new request();
 }
})

然后在要使用的页面里引入使用即可:

const app = getApp();//新建页面时 默认引入
const ajax = app.myRequest();//初始化一个的request() 实例

Page({
 data:{},
 onLoad(){
  this.getData(); 
 },
 getData(){
  ajax.getRequest('/getList',{id: 1024}).then((res)=>{
   console.log(res);
  }).catch((err)=>{
   console.log(err);
  })
 }
})

使用方法也是异常简单

  • 比如Get请求就是:ajax.getRequest(url: String, data: Object);
  • 比如Post请求就是:ajax.postRequest(url: String, data: Object);
  • ...

参考:

封装wx.request

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
很全的显示阴历(农历)日期的js代码
Jan 01 Javascript
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
jquery乱码与contentType属性设置问题解决方案
Jan 07 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
js 获取今天以及过去日期
Apr 11 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
Node.js Windows Binary二进制文件安装方法
May 16 Javascript
Vuex实现购物车小功能
Aug 17 Javascript
微信小程序wx.request的简单封装
Nov 13 #Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 #Javascript
highcharts.js数据绑定方式代码实例
Nov 13 #Javascript
vue prop属性传值与传引用示例
Nov 13 #Javascript
Vue 使用Props属性实现父子组件的动态传值详解
Nov 13 #Javascript
浅谈vue 锚点指令v-anchor的使用
Nov 13 #Javascript
Jquery异步上传文件代码实例
Nov 13 #jQuery
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
黑夜路人出的几道php笔试题
2009/08/04 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python实现将xml导入至excel
2015/11/20 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
小学语文课后反思精选
2014/04/25 职场文书
校园环保建议书
2014/05/14 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
求职自荐信怎么写
2015/03/04 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL