微信小程序 封装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动态加载以及确定加载完成的代码
Jul 31 Javascript
五段实用的js高级技巧
Dec 20 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
js电话号码验证方法
Sep 28 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
Jan 03 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
JS三级联动代码格式实例详解
Dec 30 Javascript
微信小程序实现简单购物车功能
Dec 30 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
Python中的is和id用法分析
2015/01/26 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Python timeit模块的使用实践
2020/01/13 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
python中altair可视化库实例用法
2021/01/26 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
男方父母证婚词
2014/01/12 职场文书
村委会贫困证明范文
2014/09/21 职场文书
大学生求职自荐信
2015/03/24 职场文书
大国崛起英国观后感
2015/06/02 职场文书
诚实守信主题班会
2015/08/13 职场文书
高质量“欢迎词”
2019/04/03 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS