我在通过API端点查询后端的Angular应用程序中遇到性能问题。
它公开了一个端点,我需要尽可能快地调用大量时间(> 2000)。
因此,我正在遍历Set,并为每个项目调用一个服务,该服务正在调用HttpClient get方法。 看起来像这样:
this.itemList.forEach((item: Item) => {
this.itemWsService
.getItemComputation(item)
.subscribe(// callback method);
});
问题是,我没有获得我希望得到的表演。
为了了解导致应用程序性能下降的原因,我进行了测量:
结果(如下图所示)是在Angular中执行该方法几秒钟后,我正在后端接收请求。
我的问题是:Angular是在执行get方法调用执行之前的一种等待吗?可能存在一些瓶颈,导致无法并行执行http请求?如何避免这种情况?
我正在同一台计算机上运行Angular前端和Java + Spring后端,并使用Electron将Angular嵌入到本机应用程序中。
答案 0 :(得分:2)
Angular是在触发执行get方法调用之前的等待方式
否
可能存在一些瓶颈,无法并行执行http请求吗?
是:
如何避免这种情况?
您可能可以调整浏览器设置以增加限制。但是正确的做法是重新设计API,以避免首先发送2000个并发请求。
答案 1 :(得分:1)
浏览器对并发请求数施加限制。
从应用程序设计的角度来看,如果您需要一次创建成千上万个请求,则出了点问题。例如,您可以为所有项目创建一个请求,并在单个响应中接收所有数据。
我对Spring不太了解,但是我想它提供了一种如何一次获取所有数据的方法。