我正在进行批量操作,需要为400个不同的值调用GET和PUT API。我正在使用for循环和flatMap来获取特定记录的详细信息,然后修改记录并为该记录调用update。代码如下:
for(let i=0; i<400; i++) {
const param1 = this.collectionArr[i].param1;
this.myservice.api1(param1).pipe(takeUntil(this.destroyed$), finalize(() => {
//do something after both api calls are completed
},
flatMap((result1) => {
//do some operation and create object x(this.objx)
return this.myservice.api2(param1, this.objx);
})).subscribe((result2) => {
//do something based on result2 and this.objx
})
}
此代码一切正常。但是,我在Chrome的“网络”标签中观察到,由于Chrome一次最多只能连接6个TCP连接,因此发出的请求(api1 / api2)停滞了一段时间(从几秒钟到几分钟)。这导致获取和更新操作之间的大量延迟。如果其他人同时进行更新操作,则该过程将失败。为了避免这种情况,我需要确保api2调用不会停顿,应该在api1响应后立即调用。有办法吗?