Я использую угловые 5 и rxjs.Я делаю 2 сервисных звонка, один зависит от других результатов.Я делаю это с помощью flatMap.Я также использую takeUntil, чтобы я мог прервать работу в любой точке.Мой код выглядит следующим образом:
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);
})
).subscribe((result2) => {
//do something based on result2 and this.objx
})
Этот код выполняется в цикле for, а цикл выполняется 200 раз.Поэтому совершено 400 сетевых звонков.У меня есть кнопка на пользовательском интерфейсе, чтобы прервать эту операцию, и this.destroyed $ observable выполняется при нажатии.Я могу прервать этот способ для любой итерации, когда второй вызов API не сделан (api2).Если вызывается только первый API, этот запрос отменяется.Если был вызван api2, для ответа на который требуется 20-30 секунд, он не отменяется.Я хочу, чтобы оба вызова API были отменены.Возможно ли это?