本文分享一个当请求接口入参数据过长,拆分成多个请求调用数据案例 先将数据接口拆分 自定义生成一个原始数组,然后对将数组中的数据拆分成多次调用,拿到返回数据
let originArr = [...new Array(240).keys()];
let resultArr = await this.stepGetData(originArr,60);
拆分数组数据,对接口进行多次调用 先对数组进行升维,由一维数组转换为二维数组,然后,借助promise.all及async/await并发请求数据,将返回的结果降维至一个数组,再将结果进行返回
async stepGetData(originArr, step) {
let i = 0;
// let step = 60;
let newArr = [];
do {
newArr.push(originArr.slice(i, i + step));
i += step;
} while (i < originArr.length);
let promiseArr = [];
newArr.forEach((item) => {
promiseArr.push(this.getData(item));
});
const res = await Promise.all(promiseArr);
let result = res.flat();
return result;
},
多次批量调用的函数封装,示例
async getData(arr) {
let params = {
str: arr.toString,
};
let url = "";
let res = await postAction(url, params);
let result = res.info.ok ? res.data.list : [];
return result;
},
axios请求封装,示例
export async function postAction(hostUrl, data) {
let url = `${hostUrl}?csrfId=${data.csrfId}`;
return axios({
method: "post",
url,
data,
})
}