首页 > 解决方案 > 如何发出多个请求并将数据对象保存到新数组中

问题描述

我有两种方法,它们发出 GET 请求。第一种方法将用户对象保存到 Benutzer 数组中,而在 benutzerIDs 数组中只保存用户 ID。在第二种方法中,我想遍历 benutzerIDs 数组并将这些 ID 用于另一个 GET 请求并将对象保存到数组测试中。由于多个 ID,我在执行此请求时遇到问题。目前我无法将数据保存到测试中。如何循环遍历 benutzerID 并根据此 ID 发出请求?

getBenutzerDesVorgesetzten(id) {
  axios
    .get(server.baseURL + "/benutzer/vorgesetzter/" + id)
    .then(response => {
      this.benutzerIDs = [];
      this.Benutzer = response.data;
      this.Benutzer.forEach((item) => {
        this.benutzerIDs.push(item.BenutzerID);
      });
    });
    this.getAnträgeByBenutzerID();
},
getAnträgeByBenutzerID(){
  this.test = [];
  this.benutzerIDs.forEach((id) =>
     this.test = axios.all([axios.get(server.baseURL + "/urlaubsantrag/benutzer/" + id)]))
}

标签: javascriptvue.jsaxios

解决方案


您需要使用Promise.alland Array.prototype.map

getAnträgeByBenutzerID(){
  return Promise.all(this.benutzerIDs.map((id) =>
     axios.get(server.baseURL + "/urlaubsantrag/benutzer/" + id)])));
}

map 回调创建一个 promise 数组,一旦它们全部解决,它们就会集体返回。


推荐阅读