使用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 相关文章推荐
javascript与CSS复习(二)
Jun 29 Javascript
javascript面向对象之定义成员方法实例分析
Jan 13 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
纯js实现的积木(div层)拖动功能示例
Jul 19 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
微信小程序实现日历签到
Sep 21 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
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
js实现抽奖功能
2020/11/24 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
21行Python代码实现拼写检查器
2016/01/25 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
冰淇淋开店创业计划书
2014/02/01 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
值班管理制度范本
2015/08/06 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书