У меня есть одна эпопея
type GetRailwaysEpic = Epic<GetRailwaysActions, AppState>;
const getRailwaysEpic: GetRailwaysEpic = (action$, state$) =>
action$.pipe(
filter(isActionOf(getRailways.request)),
switchMap(a =>
getRailways(state$.value.mileages.filters.date)
.then(getRailways.success)
.catch(getRailways.failure)
)
);
когда я вызываю в любом месте actions.getRailways.request (), он работает так, как ожидалось (сначала действие ЗАПРОС, затем УСПЕХ из НЕИСПРАВНОСТИ)
У меня есть еще одна эпопея
const initEpic: Epic<FiltersActions, AppState> = (action$, state$) =>
action$.pipe(
filter(isActionOf(init)),
switchMap(({ payload: { date, depotId, locTypeId, railwayId } }) =>
of(selectDate(date)).pipe(
concat(
forkEpic(getRailwaysEpic, state$, getRailways.request())
)
)
)
);
моя функция ForkEpic:
function forkEpic<T extends Action, S>(
epicFactory: Epic<T, S>,
state$: StateObservable<S>,
...actions: T[]
) {
const actions$ = ActionsObservable.of(...actions);
return epicFactory(actions$, state$, null);
}
Что я хочу: действие 'init' -> действие 'selectDate' -> действие 'getRailways.request' -> 'getRailways.success' | действие getRailways.failure
Что я вижу: действие «init» -> действие «selectDate» -> «getRailways.success» | действие getRailways.failure
Действие getRailways.request где-то отсутствует. Что я делаю не так?
P.S. getRailways - функция, возвращающая обещание P.P.S. Я нашел здесь аналогичный вопрос Как связать асинхронные действия и ждать результата без store.dispatch Но это не то, что я действительно ищу.