使用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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
用javascript编写的第一人称射击游戏
Feb 25 Javascript
可以支持多中格式的JS键盘
May 02 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
javascript常用经典算法详解
Jan 11 Javascript
vue实现标签云效果的方法详解
Aug 28 Javascript
JavaScript实现省份城市的三级联动
Feb 11 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
Zerg剧情介绍
2020/03/14 星际争霸
PHP下判断网址是否有效的代码
2011/10/08 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
JS 统计时间
2021/03/09 Javascript
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
JavaScript中的关键字"VAR"使用详解 分享
2013/07/31 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
微信小程序使用蓝牙小插件
2019/09/23 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
深入理解Python中字典的键的使用
2015/08/19 Python
python获取list下标及其值的简单方法
2016/09/12 Python
win与linux系统中python requests 安装
2016/12/04 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python检测IP地址变化并触发事件
2018/12/26 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
异步传递消息系统的作用
2016/05/01 面试题
写给女朋友的检讨书
2014/01/28 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
西安事变观后感
2015/06/12 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书