如何发出多个请求并将数据对象保存到新数组中



我有两个方法,它们发出GET请求。第一种方法将用户对象保存到Benutzer数组中,并且在benutzerID数组中只保存用户ID。在第二个方法中,我想循环遍历benutzerID数组,并将这些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)]))
}

试试这个:

getAnträgeByBenutzerID(){
this.test = [];
const promises = [];
this.benutzerIDs.forEach(id => {
promises.push(axios.get(server.baseURL + "/urlaubsantrag/benutzer/" + id))
})
axios
.all(promises)
.then(res =>
//res is an array of raw data
this.test = res.map(item => item.data);
)
}

您需要使用Promise.allArray.prototype.map:

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

map回调创建了一个promise数组,这些promise一旦全部解析,就会被集体返回。

最新更新