Я выполняю массовую операцию, в которой мне нужно вызывать GET и PUT API для 400 различных значений. Я использую цикл for и flatMap для получения подробной информации о конкретной записи, а затем изменяю запись и вызываю обновление для этой записи. Код приведен ниже:
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 я заметил, что запросы (api1 / api2) на некоторое время останавливаются (в пределах от нескольких секунд до нескольких минут) из-за ограничения Chrome максимум 6 соединений tcp к источнику за раз. Это приводит к значительной задержке между операцией получения и обновления. Если кто-то еще выполняет операцию обновления, процесс завершается ошибкой Чтобы избежать этого, я должен убедиться, что вызов api2 не должен останавливаться и должен вызываться, как только ответ получен от api1. Есть ли способ сделать это?