微信小程序 封装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中根据字数截取字符串,不能截断url
Jan 12 Javascript
js操作table示例(个人心得)
Nov 29 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
js实现省份下拉菜单效果
Feb 15 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
Mar 09 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
js滚轮事件 js自定义滚动条的实现
Jan 18 Javascript
基于JavaScript实现轮播图效果
Jan 02 Javascript
详解TypeScript中的类型保护
Apr 29 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记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python复制文件的方法实例详解
2015/05/22 Python
python制作简单五子棋游戏
2019/06/18 Python
Python input函数使用实例解析
2019/11/22 Python
Django实现celery定时任务过程解析
2020/04/21 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
美容师的职业规划书
2013/12/27 职场文书
面试后的英文感谢信
2014/02/01 职场文书
重点工程汇报材料
2014/08/27 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
母亲节寄语大全
2015/02/27 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
社区文明倡议书
2015/04/28 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书