使用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实现Sleep函数的代码
Mar 04 Javascript
Extjs中常用表单介绍与应用
Jun 07 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
跟我学习javascript的函数和函数表达式
Nov 16 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
Jul 28 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 Javascript
html5调用摄像头截图功能
Jan 18 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字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
PHP中str_replace函数使用小结
2008/10/11 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
PHP实现简易图形计算器
2020/08/28 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
python爬虫爬取网页表格数据
2018/03/07 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
wxPython实现分隔窗口
2019/11/19 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书