入参数据过长,拆分成多个请求调用数据案例

139 阅读1分钟

本文分享一个当请求接口入参数据过长,拆分成多个请求调用数据案例 先将数据接口拆分 自定义生成一个原始数组,然后对将数组中的数据拆分成多次调用,拿到返回数据

 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,
    })
}