微信小程序 封装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 相关文章推荐
js 实现css风格选择器(压缩后2KB)
Jan 12 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
JavaScript设计模式之建造者模式介绍
Dec 28 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
Sep 30 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
vue自定义filters过滤器
Apr 26 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
JavaScript原生数组函数实例汇总
Oct 14 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 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框架的理由
2015/09/26 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
javascript如何创建对象
2016/08/29 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
JavaScript 五大常见函数
2018/03/23 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
Python常见数据结构详解
2014/07/24 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
老乡聚会通知
2015/04/23 职场文书
倡议书怎么写?
2019/04/11 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
tomcat下部署jenkins的方法
2022/05/06 Servers