微信小程序 封装http请求实例详解


Posted in Javascript onJanuary 16, 2017

微信小程序 封装http请求

最近看了一下微信小程序,大致翻了一下,发现跟angular很相似的,但是比angular简单的很多具体可参考官方文档

https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/page.html?t=2017112

下面将封装http请求服务部分的服务以及引用部分

// 本服务用于封装请求
// 返回的是一个promisepromise

var sendRrquest = function (url, method, data, header) {
  var promise = new Promise(function (resolve, reject) {
    wx.request({
      url: url, 
      data: data,
      method: method,
      header: header,
      success: resolve,
      fail: reject
    })
  });
  return promise;
};

module.exports.sendRrquest = sendRrquest

在utils文件中创建文件requestService.js文件

下边是在page.js文件中引用部分代码

// 界面一般通过使用Page函数注册一个界面,接收一个Object对象,该对象指定了初始化数据/生命周期函数函数/事件处理函数
// data 存放页面初始化数据数据,类似angular的的$scope
// onLoad 生命周期函数 监听页面加载
// onReady 生命周期函数 监听页面首次渲染完成完成
// onShow 生命周期函数 监听界面显示
// onHide 生命周期函数 监听界面隐藏
// onUnload 生命周期函数 监听页面卸载
// onPullDownRefresh 页面相关事件 监听用户下拉事件
// onReachBottom 页面上拉到达底部触发的事件
// onShareAppmessage 点击左上方分享事件

var testService = require('../../utils/testService.js')
var request = require('../../utils/requestService.js')
Page({
  data:{
    test:'123',
    positionlist:[]
  },
  onLoad:function(){

  },
  onReady: function () {
    var that = this;
    testService.test('a');
    testService.agerntest('a');
    var url = 'https://webapi.tianjihr.com/position/searcher?sort=-refresh_time&offset=10&limit=10';
    request.sendRrquest(url, 'GET', {}, {})
      .then(function (response) {
        that.setData({
          positionlist:response.data.list
        });
        console.log(response);
      }, function (error) {
        console.log(error);
      });
  },
  onPullDownRefresh: function () {
    
  },
  onShareAppMessage: function () {
    // 微信分享需要的配置参数
    return {
      title: '自定义分享标题',
      desc: '自定义分享描述',
      path: '/page/user?id=123'
    }
    // console.log(1);
  }
});

上边的代码和js代码有不同的代码需要注意

1.异步处理方式改变

原有方式是:

var promise = new Promise();
promise.resolve('成功');
promise.reject('失败');
return promise;

现有的方式:

return new Promise(function (resolve, reject) {
  resolve('成功');
  reject('失败');
})

2.在promise成功或者失败的回调中不能直接赋值,如:

var that = this;
test()
.then(function(){
  that.data.test='';
},function(){

})

需要使用如下方式:

var that = this;
test()
.then(function(){
  that.setDatat={
    test:123
  };
},function(){

})

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
javascript中offset、client、scroll的属性总结
Aug 13 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
Jan 18 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
微信小程序学习之数据处理详解
Jul 05 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
小程序云开发部署攻略(图文教程)
Oct 30 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 Javascript
详解vue-validator(vue验证器)
Jan 16 #Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 #Javascript
webpack入门必知必会
Jan 16 #Javascript
angular+ionic 的app上拉加载更新数据实现方法
Jan 16 #Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 #Javascript
谈谈Vue.js——vue-resource全攻略
Jan 16 #Javascript
Javascript的this用法
Jan 16 #Javascript
You might like
非常好的php目录导航文件代码
2006/10/09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php获取远程文件内容的函数
2015/11/02 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
JavaScript 原型继承
2011/12/26 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
linux下安装easy_install的方法
2013/02/10 Python
py2exe 编译ico图标的代码
2013/03/08 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
Python3远程监控程序的实现方法
2019/07/15 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
教师业务学习制度
2014/01/25 职场文书
优秀学生事迹材料
2014/02/08 职场文书
班级学习计划书
2014/04/27 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
jquery插件实现悬浮的菜单
2021/04/24 jQuery
Mysql基础知识点汇总
2021/05/26 MySQL