微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

微信小程序promise封装网络请求wx.request

微信小程序给我们封装了wx.request用于请求网络接口数据,通常的形式是

wx.request({
  url: 'example.PHP', //仅为示例,并非真实的接口地址
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 认值
  },
  success (res) {
    console.log(res.data)
  }
})
url是请求的接口地址,data是需要发送的数据,header是请求头,success是成功回调函数,method是请求类型...

里面还有很多的参数具体代表什么意思需要自己去微信的官方文档下看,但通常使用的就是这些。如果我们需要使用很多接口请求数据,每次都写一遍,会造成大量的代码冗余,我们可以将wx.request进行二次封装来实现调用。

我们用Promise实现异步回调。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

wx.request返回形式是
success (res) {
    console.log(res.data)
  }
fail(e){
...
}
我们使用promise可以将这种形式封装为
​request.GET().then(res=>{
       console.log(res);  
    }).catch(e=>{
 
    })
 
​
只封装最常用的GET和POST请求

function POST(baseAPI,url, params) {
  //加载loading
  wx.showLoading({
      title: '加载中...',
      mask: true
  })
  let promise = new Promise(function (resolve, reject) {
      wx.request({
          url: baseAPI + url,
          data: params,
          header: {
              "Content-Type": "application/x-www-form-urlencoded",
          },
          method: 'POST',
          success: (res) => {
              //接收返回的值
              resolve(res)
          },
          fail: (res) => {
              //拒绝返回的值
              reject(res)
          },
          complete: () => {
              //不管回调是否成功都做一个隐藏
              wx.hideLoading()
          }
      })
  });
  return promise;
}
 
function GET(baseAPI,url, params) {
  let promise = new Promise(function (resolve, reject) {
      wx.request({
          url: baseAPI + url,
          data: params,
          header: {
              "Content-Type": "application/x-www-form-urlencoded",
          },
          method: 'GET',
          success: (res) => {
              resolve(res)
          },
          fail: (res) => {
              reject(res)
          }
      })
  });
  return promise
}
module.exports = {
    POST: POST,
    GET: GET,
}

封装好的函数如何使用:

首先在你需要发送网络请求的页面引入封装好的js文件

const request = require('../../utils/promise.js');

然后在需要的地方使用

let BaseAPI = 'https://m.maoyan.com';
    let data = {
      
    }
    request.GET(BaseAPI,'',data).then(res=>{
       console.log(res.data.coming);
      
    })
其中BaseAPI为需要发送网络请求的公共部分,在GET的 '' 中填入后半部分,封装好的函数会实现地址的拼接,data为发送的参数
原文链接:https://blog.csdn.net/m0_61084402/article/details/124196665

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐