Большое количество вызовов API с использованием flatMap в Angular - PullRequest
0 голосов
/ 15 марта 2019

Я выполняю массовую операцию, в которой мне нужно вызывать 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. Есть ли способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...