在Angular中使用flatMap进行大量的api调用

时间:2019-03-15 08:49:35

标签: angular rxjs

我正在进行批量操作,需要为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响应后立即调用。有办法吗?

0 个答案:

没有答案