wx小程序 用promise 封装wx.request() 可以内增拦截器

个人习惯 将接口独立出来一个JS文件,这个文件配置 接口主域名 测试域名 等接口连接参数
例如:

var url = 'https://www.****.com/****/'
var v1 = 'v1'
var api:{
  $api: {
    get(url, params) {
      return this.apiTem(url, params, "GET")
    },
    post(url, params) {
      return this.apiTem(url, params, "POST")
    },
    apiTem: function (url, params, method) {
      return new Promise(function (resolve, reject) {
        wx.request({
          url: url,
          method: method,
          header: {
            FR_APPID: app.globalData.extAppid || '',
            FR_OPEN_ID: app.globalData.openid || '',
            FR_LOGIN_TICKET: app.globalData.ticket || ''
          },
          data: params,
          success(res) {
            resolve(res.data)
          },
          fail(loginData) {
            reject(res)
          }
        })
      })
    }
  },
  // 获取OPENID
  jscode2session: `${url + v1}/user/jscode2session.json`,
}

在page页去去引用这个API 配置文件

const config = require('../../utils/api.js')
//***
//***
//使用
    config.$api.post(config.saveAuthWxInfo, {
      encryptedData: e.detail.encryptedData,
      iv: e.detail.iv
    }).then(res => {
        //成功响应
        //可以根据自己需求 针对性的res.code ==200  or   !200 的情况进行封装处理  resolve
    }).catch(res=>{
        //失败响应
    })

犹豫wx.request会将我们自己后台的响应代码再次封装在他的一层响应状态之内、这样可以只将我们自己公司响应打印给res

你可能感兴趣的:(js)