2 回答
TA贡献1802条经验 获得超10个赞
您可以为此使用Promise.all:
this.allMyFacilities = response[1].data
const promises = this.allMyFacilities.map((myFacility) => {
return axios
.get(facilityUsed(myFacility.id))
.then((response) => {
this.facilitiesOnSupplyChain[myFacility.id] = response.data
return response.data;
}).catch((err) => {
// An error will also be thrown if you use cancel.
console.error(err)
});
});
Promise.all(promises).then((allResponsesArray) => /* do sth */)
TA贡献2021条经验 获得超8个赞
假设所有异步调用都可以独立进行,您可以利用该Promise.all功能来实现这一点。
this.allMyFacilities = response[1].data
await Promise.all(this.allMyFacilities.map(myFacility) => {
return axios.get(facilityUsed(myFacility.id))
.then(data => this.facilitiesOnSupplyChain[myFacility.id] = data);
});
这将允许您axios并行执行所有调用,从而减少整个过程的总体执行时间。
PS:我已经写了一个await声明,假设你将把这个功能包装在一个async函数中。
添加回答
举报