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

发布时间 - 2026-01-10 22:33:37    点击率:

微信小程序 封装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(){

})

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


# 微信小程序  # 封装http  # 封装http请求实例详解  # http  # 微信小程序设置http请求的步骤详解  # 微信小程序 http请求封装详解及实例代码  # 微信小程序 http请求的session管理  # 微信小程序 http请求详细介绍  # 微信小程序HTTP接口请求封装的实现  # 微信小程序封装的HTTP请求示例【附升级版】  # 监控微信小程序中的慢HTTP请求过程详解  # Fundebug支持监控微信小程序HTTP请求错误的方法  # 微信小程序HTTP接口请求封装代码实例  # 微信小程序HTTP请求从0到1封装  # 周期函数  # 自定义  # 的是  # 是在  # 看了  # 首次  # 希望能  # 翻了  # 谢谢大家  # 需要注意  # 回调  # 很相似  # 加载  # 文档  # url  # data  # header  # method  # function  # promisepromise 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理异常和错误?(Handler示例)  linux写shell需要注意的问题(必看)  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何保护应用免受CSRF攻击?(原理和示例)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  深圳网站制作的公司有哪些,dido官方网站?  如何快速上传建站程序避免常见错误?  如何注册花生壳免费域名并搭建个人网站?  使用spring连接及操作mongodb3.0实例  使用Dockerfile构建java web环境  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何快速搭建个人网站并优化SEO?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Android GridView 滑动条设置一直显示状态(推荐)  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  北京专业网站制作设计师招聘,北京白云观官方网站?  如何用AWS免费套餐快速搭建高效网站?  如何快速生成ASP一键建站模板并优化安全性?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何在阿里云香港服务器快速搭建网站?  Laravel如何使用Eloquent进行子查询  Laravel如何配置Horizon来管理队列?(安装和使用)  详解jQuery中基本的动画方法  如何用狗爹虚拟主机快速搭建网站?  如何在香港免费服务器上快速搭建网站?  ,交易猫的商品怎么发布到网站上去?  香港服务器租用费用高吗?如何避免常见误区?  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  如何有效防御Web建站篡改攻击?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  电商网站制作价格怎么算,网上拍卖流程以及规则?  JavaScript常见的五种数组去重的方式  javascript中闭包概念与用法深入理解  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  MySQL查询结果复制到新表的方法(更新、插入)  用v-html解决Vue.js渲染中html标签不被解析的问题  如何正确选择百度移动适配建站域名?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  香港服务器租用每月最低只需15元?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法