-
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