我正在使用外部API编写React应用程序。但是我面对atm的一个小问题。我需要对我拥有的每个ID发出一个GET请求。我可能最多需要处理1000个GET请求,而问题是获取所有数据所花费的时间。有没有办法让1000个GET请求无需等待每个请求都解决?我有这个,但它永远都需要。
for(const match of totalMatchesWithPremades){
try {
const matchStats: ISats = await axios.request<IMatchStats>({
url: `https://API/match/${match.match_id}/stats`,
method: 'get',
headers: {
accept: 'application/json',
Authorization: `Bearer ${API_KEY}`,
},
});
console.log(JSON.stringify(matchStats,null,2))
} catch (err) {
console.log(err);
}
}
答案 0 :(得分:0)
可能您需要检出类似bulk
的API路由。所以您可以设置match_id
数组,仅发出一个请求并获取数据数组。
否则,您需要等待每个请求被执行。
答案 1 :(得分:0)
我发现我可以像这样使用Promise.allSettled()
Promise.allSettled(arr.map((match)=>{
const matchStats: ISats = await axios.request<IMatchStats>({
url: `https://API/match/${match.match_id}/stats`,
method: 'get',
headers: {
accept: 'application/json',
Authorization: `Bearer ${API_KEY}`,
},
});
console.log(JSON.stringify(matchStats,null,2))
} catch (err) {
console.log(err);
}
})
这将一个接一个地执行所有Promises,并在它们被满或拒绝时返回一个数组。我在5秒内4分钟内提出了400个请求