Axios 請(qǐng)求并發(fā)函數(shù)封裝

  • 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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容