У меня есть такой эффект, что я запрашиваю несколько значений для извлечения продукта из службы. После отправки REQUEST_PRODUCTS вызывается один раз, как и ожидалось, но когда я пытался перейти в другое место в маршрутизации, this.apiMarketServices вызывается серверами раз, это триггер перехода маршрутизатора, и это перенаправляет на предыдущую страницу. Действие REQUEST_PRODUCTS отправляется один раз. Почему этот эффект называется несколькими временами?
Нужно ли мне добавлять какой-то стоп к эффекту, чтобы избежать вызова после возврата GetSuccess и GetFailed?
@Effect()
requestProductsFromMarket = this.actions$
.ofType(REQUEST_PRODUCTS)
.withLatestFrom(this.store)
.switchMap(([action, store]) => {
const id = store.product.id;
return this.savedProducts.getProduct(id, 'store');
})
.switchMap(_ => this.stateService.getMarketId())
.switchMap(({ marketId }) =>
this.apiMarketServices.get(MARKETS_PROFILES + marketId)
)
.withLatestFrom(this.store)
.map(([r, store]) => {
const ser = r.data.map(s => s.legId);
const storSer =
store.product.serIds;
if (storSer.every(s =>ser.includes(s))) {
this.router.navigate([
`/products/edit/${store.products.id}`
]);
return GetSuccess;
} else {
return GetFailed;
}
})
.catch(() => of(GetQueryFailed));