微信小程序 封装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 相关文章推荐
Javascript 定时器调用传递参数的方法
Nov 12 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
jQuery统计上传文件大小的方法
Jan 24 Javascript
基于jQuery实现的无刷新表格分页实例
Feb 17 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
Apr 14 Javascript
vue实现登录功能
Dec 31 Vue.js
详解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
解析strtr函数的效率问题
2013/06/26 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
Python实现截屏的函数
2015/07/25 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Django实现网页分页功能
2019/10/31 Python
Python阶乘求和的代码详解
2020/02/14 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
Python类的继承super相关原理解析
2020/10/22 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
出纳员岗位职责风险
2014/03/06 职场文书
经济贸易系求职信
2014/08/04 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
室内趣味活动方案
2014/08/24 职场文书
职位证明模板
2015/06/23 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
python使用BeautifulSoup 解析HTML
2022/04/24 Python