使用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 XML操作 封装类
Jul 01 Javascript
js下判断 iframe 是否加载完成的完美方法
Oct 26 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
关于angularJs指令的Scope(作用域)介绍
Oct 25 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
Jan 20 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
JS的Ajax与后端交互数据的实例
Aug 08 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 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
多重?l件?合查?(二)
2006/10/09 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
制作特殊字的脚本
2006/06/26 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
Python多线程下载文件的方法
2015/07/10 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python面向对象之继承代码详解
2018/01/29 Python
python opencv之SIFT算法示例
2018/02/24 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python修改文件内容的3种方法详解
2019/11/15 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
法学求职信
2014/06/22 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
七年级英语教学反思
2016/02/15 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis