使用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 this关键字使用分析
Oct 21 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
Aug 05 Javascript
js鼠标点击图片实现随机变换图片的方法
Feb 16 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
bootstrap表格分页实例讲解
Dec 30 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
深入理解Node中的buffer模块
Jun 03 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
如何封装了一个vue移动端下拉加载下一页数据的组件
Jan 06 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
javascript拖曳互换div的位置实现示例
Jun 28 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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
php socket通信简单实现
2016/11/18 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
详解Python中where()函数的用法
2018/03/27 Python
django中模板的html自动转意方法
2018/05/27 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
详解django中Template语言
2020/02/22 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
校园门卫岗位职责
2013/12/09 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
绿色环保演讲稿
2014/05/10 职场文书
小学生环保标语
2014/06/13 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
房屋维修申请报告
2015/05/18 职场文书
民间借贷借条如何写
2015/05/26 职场文书
合同范本之电脑出租
2019/08/13 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android