Newer
Older
CloudBrainNew / src / utils / fetchAll.js
liyaguang 4 days ago 1 KB 添加点位视频
import request1 from "@/utils/request1";
async function fetchAllData(total, pageNo1, pageSize, url, data) {
  try {
    // 如果总条数小于等于每页条数,直接返回第一页数据
    if (Number(total) <= Number(pageSize)) {
      return [];
    }

    // 2. 计算需要请求的总页数
    const totalPages = Math.ceil(Number(total) / 50);

    // 3. 循环请求剩余页数的数据(从第2页开始)
    const fetchPromises = [];
    for (let pageNo = pageNo1; pageNo <= totalPages; pageNo++) {
      fetchPromises.push(
        // fetch(`/api/data?pageNo=${pageNo}&pageSize=50`)
        //   .then(res => {
        //     if (!res.ok) {
        //       throw new Error(`第${pageNo}页请求失败: ${res.status}`);
        //     }
        //     return res.json();
        //   })
        //   .then(data => data.list)
        request1({
          url: url,
          method: "post",
          data: {
            ...data,
            pageNo: pageNo,
            pageSize: pageSize
          }
        })
      );
    }

    // 4. 等待所有请求完成,合并数据
    const remainingData = await Promise.all(fetchPromises);
    return [ ...remainingData.flat()]
  } catch (error) {
    console.error("获取数据失败:", error);
    throw error; // 抛出错误供调用者处理
  }
}
export default fetchAllData;