小程序request请求用promise公共方法以及调用

1.方法:

const baseUrl = 'https://api.it120.cc';
// 配置接口请求的公共方法
const http =({url ='',param ={},method='',header={}}={}) =>{
  wx.showLoading({
    title: '请求中,请耐心等待...',
  });
  let timeStart = Date.now();
  return new Promise((resolve,reject)=>{
    wx.request({
      url: getUrl(url),
      data:param,
      method: method,
      header:header,
      complete:(res)=>{
          wx.hideLoading();//慎用hideLoading,会关闭wx.showToast弹窗
          console.log(`耗时${Date.now() - timeStart}`);
          if(res.statusCode ==200){//请求成功
            resolve(res.data)
          }else{
            reject(res);
          }
      }
    })
  })
}
// 获取url
const getUrl = (url)=>{
  if(url.indexOf('://')== -1){
    url = baseUrl +url ;
  }
  return url;
}
//暴露出去调用的方法
 
const _api = (url,param ={},method,header)=>{
  return http({
    url,
    param,
    method:method?method:'get',
    header:header ? header : { "Content-Type": "application/json" },
  })
}
方法暴露出去
module.exports = {
  formatTime: formatTime,
  api:_api
}


2.掉用:

const until = require('../../utils/utils.js')

// 单个请求
until.api('/authorize',param,'post').then(res => {
    console.log("authorize:",res);
 }).catch(e => {
    console.log(e);
    wx.showToast({
        title: e.data.errMsg,
        icon: 'none',
        duration: 3000
    })
 })
// 一个页面多个请求
Promise.all([
  api.get('list'),
  api.get(`detail/${id}`)
]).then(result => {
  console.log(result)
}).catch(e => {
  console.log(e)
})

 

posted @ 2020-03-24 16:24  世界我快乐  阅读(1017)  评论(0编辑  收藏  举报