请求函数包含请求函数正确写法

发布时间 2023-05-26 11:22:05作者: yjxQWQ
  store.sourcematerialtableData = [];
  store.sourcematerialtableData2 = [];

  const { data } = await ApiService.get(RESOURCE, `files?uuid=${UUID}&access_token=${ACCESS_TOKEN}&page=1`);
  if (data.data.next_page_url != null) {
    const regex = /page=(\d+)/;
    const match = data.data.next_page_url.match(regex);
    const endIndex = parseInt(match[1]);

    for (let index = 1; index <= endIndex; index++) {
      await findmaterial2(index);
    }
  }
}

async function findmaterial2(page) {
  const { data } = await ApiService.get(RESOURCE, `files?uuid=${UUID}&access_token=${ACCESS_TOKEN}&page=${page}`);
  
  const newData = data.data.data.map(obj => {
    const { id, tags, name } = obj;
    const newObj: User = {
      id,
      label: [],
      name,
    };

    if (obj.tags.length !== 0) {
      const str = tags[0].name;
      newObj.label = str.split(",");
    }

    return newObj;
  });

  store.sourcematerialtableData.push(...newData);
  store.sourcematerialtableData2.push(...data.data.data);
}

主要犯错
1.在 findmaterial 函数中,你使用了一个循环来请求多个页面的数据。然而,这个循环中的每个请求都是异步的,并且没有等待每个请求的完成,因此无法保证数据的顺序和完整性。你可以考虑使用 async/await 来改善这个问题,以确保每个请求都完成后再进行下一步操作。
2.在两个请求中,你使用了字符串拼接来构建 URL。这种方式容易出错,并且不够直观。你可以考虑使用 URL 参数的方式来构建 URL,以更清晰和可维护的方式处理 URL 参数。