0

嗨 StackOverflow 社区成员,

我正在研究 Angular 8。我有一个关于如何分解我的 HTTP 请求的问题,而不是一次发送 1000 个请求,我希望每 50 个请求一次发送一次。我想不出任何方法来实现这一点。下面是我的代码片段:

for (let i = 0; i < products.length; i++) {
    this.myService.getProductInfoByCountryAndProductId(this.selectedCountries, this.product[i])
    .subscribe(
       (res) => { //get result },
       (error) => { //throw error },
       () => { //do something here });
}

上面的代码会一次性触发所有请求,想象一下如果我有 1000 个产品在products数组中,这意味着它会循环 1000 次,并且会向服务器发送 1000 个请求并导致性能问题。有没有办法限制客户端不要一次性发送所有请求?

我试过combineLatest了,结果不是我想要的。我想尝试concatMap,但这意味着它会逐个发送 HTTP 请求,并且需要很长时间来处理所有产品。有什么建议或想法吗?

4

1 回答 1

0

您要解决的问题更多是关于架构而不是角度 http 功能。

最后,通过 HTTP 交换的字节数将是相同的。您现在必须弄清楚“如何”。

如果你想减少 API 调用的数量,一个解决方案可以是调整你的 web 服务以接受多个产品 id,并且前端准备好接收一个数组而不是单个结果。

于 2020-03-06T04:50:10.130 回答