Axios 请求并发函数封装

  • axios并发函数封装

    • 对于错误请求进行捕获拦截,不影响剩余请求继续执行,返回请求成功的接口数据,抛出接口报错信息。

    • 接口请求顺序与数据返回顺序一致,使用axios.spread 分割成多个单独的响应对象。

import axios from 'axios'

import app from '@/main'

function requestSpreads (requestArr) {

  if (Object.prototype.toString.call(requestArr) === '[object Array]') {

    return axios.all(

      requestArr.map(res => res.catch(e => {

        app.$message.warning(`${e}`)

      }))

    ).then(

      axios.spread(function (...res) {

        return Promise.resolve(res)

      })

    )

  } else {

    const error = new Error('参数错误!')

    try {

      throw error

    } catch (e) {

      app.$message.warning(`${e}`)

    }

  }

}

// 执行并发请求函数

function sendAllApi (requestArr) {

  return new Promise((resolve, reject) => {

    requestSpreads(requestArr).then(res => {

      return resolve(res)

    })

  })

}

// 使用方法

sendAllApi(requestArr).then(res => {

  //console.log(res)

 // 返回数组,长度等同请求个数,res = [{}, {}]

})

export default sendAllApi

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。