【发布时间】:2020-07-24 14:25:01
【问题描述】:
我正在使用外部 API 制作一个 React 应用程序。但我面临一个小问题。我需要对我拥有的每个 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);
}
}
【问题讨论】:
-
如果您可以修改后端,您可以在 API 中添加一个新条目,在其中提供要获取的 ID 数组并让后端为您执行请求。如果您的后端使用 SQL 数据库,您还可以一次调用多个项目:SELECT * FROM table WHERE id IN array;
-
@HermitCrab 我不能这样做,因为 API 不是我的。我将使用 memoize 缓存响应,以便下次用户仅请求新 ID 并从缓存中获取其余部分。但至少在用户第一次使用应用时,根据他的 ID 数量,他需要全部请求
-
是否绝对需要预先请求所有内容,或者您可以请求初始子集,然后根据需要使用一些按钮加载更多内容?由于 API 不支持,因此通过您的 React 应用程序提供伪造的批量读取/分页支持。
-
@AndrewNolan 这实际上是一个好主意,但它不适用于这种情况,因为我将使用数据来显示一些统计数据,例如点的平均值等。对于这些计算,我需要先获得所有数据,然后才能将其展示给用户
标签: reactjs typescript rest get axios