项目中遇到了同时请求两个接口的并发请求,如果遇到更多也适用,直接上代码
axios.js代码
根据axios官网示例
使用axios.all(options).then(axios.spread(res=>{}))方法,我使用promise处理了resolve和reject
class HttpRequest {
mergeRequest(options) {
return new Promise(function (resolve,reject) {
axios.all(options).then(axios.spread( (res1,res2) => {
var arr = [res1,res2]
resolve(arr)
})).catch(err => {
reject(err)
}
)
})
}
}
export default HttpRequest
在接口api里面定义
api.js
import axios from '@/libs/api.request'
import { getToken } from '@/libs/util'
export const getNodeList = (name) => {
return axios.request({
url: `/clusters/${name}`,
headers: {
'Content-Type': 'application/json',
'authorization': 'bearer ' + getToken()
},
method: 'get'
// params: query
})
}
export const getNodes = (name) => {
return axios.request({
url:`clusters/${name}`,
headers: {
'Content-Type': 'application/json',
'authorization': 'bearer ' + getToken()
},
method: 'get'
// params: query
})
}
export const merge = (name) => {
return axios.mergeRequest([getNodeList(name),getNodes(name)])
}
vue里面调用
import { merge } from '@/api/node'
merge(this.clusterName).then((res) => {}).catch(err=>{})