-
axios并發(fā)函數(shù)封裝
對(duì)于錯(cuò)誤請(qǐng)求進(jìn)行捕獲攔截,不影響剩余請(qǐng)求繼續(xù)執(zhí)行,返回請(qǐng)求成功的接口數(shù)據(jù),拋出接口報(bào)錯(cuò)信息。
接口請(qǐng)求順序與數(shù)據(jù)返回順序一致,使用axios.spread 分割成多個(gè)單獨(dú)的響應(yīng)對(duì)象。
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('參數(shù)錯(cuò)誤!')
try {
throw error
} catch (e) {
app.$message.warning(`${e}`)
}
}
}
// 執(zhí)行并發(fā)請(qǐng)求函數(shù)
function sendAllApi (requestArr) {
return new Promise((resolve, reject) => {
requestSpreads(requestArr).then(res => {
return resolve(res)
})
})
}
// 使用方法
sendAllApi(requestArr).then(res => {
//console.log(res)
// 返回?cái)?shù)組,長度等同請(qǐng)求個(gè)數(shù),res = [{}, {}]
})
export default sendAllApi