使用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 相关文章推荐
prettify 代码高亮着色器google出品
Dec 28 Javascript
再论Javascript下字符串连接的性能
Mar 05 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 Javascript
jQuery基于ID调用指定iframe页面内的方法
Jul 06 Javascript
AngularJS入门教程之ng-class 指令用法
Aug 01 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
浅谈用Webpack路径压缩图片上传尺寸获取的问题
Feb 22 Javascript
JS操作json对象key、value的常用方法分析
Oct 29 Javascript
vue iview实现动态新增和删除
Jun 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
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python基础 range的用法解析
2019/08/23 Python
Python测试线程应用程序过程解析
2019/12/31 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
工程造价管理专业大专生求职信
2013/10/06 职场文书
会计演讲稿范文
2014/05/23 职场文书
倡议书的写法
2014/08/30 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
禁毒心得体会范文
2016/01/15 职场文书
物业管理交接协议书
2016/03/24 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
Python基础之pandas数据合并
2021/04/27 Python
基于Python编写一个监控CPU的应用系统
2022/06/25 Python
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python