Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 8:分解HTTP请求,而不是发送一个总包_Angular_Httprequest_Subscribe_Combinelatest_Concatmap - Fatal编程技术网

Angular 8:分解HTTP请求,而不是发送一个总包

Angular 8:分解HTTP请求,而不是发送一个总包,angular,httprequest,subscribe,combinelatest,concatmap,Angular,Httprequest,Subscribe,Combinelatest,Concatmap,各位社区成员: 我正在研究Angular 8。我有一个关于如何分解我的HTTP请求的问题,我不想一次发送1000个请求,而是希望有一个类似于只在一次中发送50个请求的方法。我想不出任何办法来实现这一点。下面是我的代码片段: for (let i = 0; i < products.length; i++) { this.myService.getProductInfoByCountryAndProductId(this.selectedCountries, this.product

各位社区成员:

我正在研究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 });
}
for(设i=0;i{//get result},
(错误)=>{//throw error},
()=>{//在这里做点什么});
}
上面的代码将在一次遍历中触发所有请求,想象一下,如果我在
products
数组中有1000个产品,这意味着它将循环1000次,1000个请求将发送到服务器并导致性能问题。有没有办法限制客户端不一次性发送所有请求


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

您试图解决的问题更多地是关于体系结构,而不是角度分明的http功能

最后,通过HTTP交换的字节数将是相同的。你现在必须弄清楚“怎么做”


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

您真的需要提前填充所有这些信息吗?不确定您的应用程序,但通常我希望使用分页,只加载我需要的内容。@Bodacious这不是显示数据,而是收集所有数据并将其导出到Excel中。我的客户希望它能够出口所有产品(到目前为止,DB中约有1400多种产品)。我已经告诉他们,他们可能会对性能问题产生影响,但他们坚持。明白了。我猜不可能在服务器端实现一个端点来返回所有内容?@Bodicious我建议这样做,在服务器端填充所有数据并向最终用户发送一封带有Excel附件的电子邮件,但仍然没有从客户端得到任何响应。所以我想先在中搜索任何答案,如果可以的话,这样我就不需要浪费时间在服务器端编写新的实现了。当然,这是可能的,但即使是成批处理的,您仍然会看到1000个http请求。您不必从服务器发送电子邮件,您只需要一个端点,它可以一次返回多个产品的信息。