axios封装


import qs from "qs"
import axios from "axios"

/**
 * 顺序执行操作
 * @param {*} arr 传递函数数组
 */
let _queue = async arr => {
  let res = null
  for (let promise of arr) {
    try {
      res = await promise(res)
    } catch (error) {
      return Promise.reject(error)
    }
  }
  return res
}

// 无序执行
let  _all = async params => await Promise.all(params)
const BASE_HOST = 'https://basehost'
let REQNUM = 0
let TIME_OUT = null

const errorHandle = (response) => {//错误处理
  
}

const instance = axios.create({
  timeout: 1000 * 12,
  baseURL: BASE_HOST
})

const setLoading = () => {
  REQNUM--
  clearTimeout(TIME_OUT)
  if (!REQNUM) {
    //关闭loading  $loading({ show: false })
  }
}

instance.interceptors.request.use(
  config => {
    config.beginTime = Date.now()
    const token = getCookie()
    token && (config.headers.Authorization = `Bearer ${token}`)
    REQNUM++
    if (+REQNUM === 1) {
      TIME_OUT = setTimeout(() => {
        $loading()
      }, 500)
    }
    return config
  },
  error => Promise.error(error)
)

const _reject = response => {
  //前端监控处理
  errorHandle(response)
  return Promise.reject(response)
}

instance.interceptors.response.use(
  res => {
    setLoading()
    if (res.status === 200 && res.data.status_code === 200) {//请求成功
      
    } else Promise.reject(res)
  },
  ({ response }) => {
    setLoading()
    if (response) return _reject(response)
  }
)
const post = (url, params = {}) => {
  return instance({
    method: "post",
    url,
    data:
      Object.prototype.toString.call(params) === "[object FormData]" ? params : qs.stringify(params)
  })
}

const get = (url, params = {}) => {
  return instance({
    method: "get",
    url,
    params
  })
}

const [queue, all] = [_queue, _all].map(i => {
  return async arr => {
    let res = null
    res = await i(arr)
    return res
  }
})

export { get, post, queue, all }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值