В редуцируемом эпосе, почему мы можем отфильтровать поток действий одного типа, но получить доступ к потоку действий другого типа? - PullRequest
0 голосов
/ 24 марта 2019

В примерах отмены официального документа, наблюдаемого в редуксе, мы сначала фильтруем действие потока действия $ по типу, а затем отправляем вызов ajax потоку действия другого типа.Я не понимаю, как это возможно для действия $ типа FETCH_USER_CANCELLED пройти через первый фильтр ofType (FETCH_USER).

Вот пример

const fetchUserEpic = action$ => action$.pipe(
  ofType(FETCH_USER),
  mergeMap(action => race(
    ajax.getJSON(`/api/users/${action.payload}`).pipe(
      map(response => fetchUserFulfilled(response))
    ),
    action$.pipe(
      ofType(FETCH_USER_CANCELLED),
      map(() => incrementCounter()),
      take(1)
    )
  ))
);

Почему бы нам ненужен 'FETCH_USER_CANCELLED' в фильтре первого типа?

action$.pipe(
  ofType(FETCH_USER, FETCH_USER_CANCELLED),
  ...

Был бы признателен, если кто-то может объяснить.

1 Ответ

0 голосов
/ 25 марта 2019

В приведенном выше примере вы используете нефильтрованный поток action$ дважды.Фильтр ofType(FETCH_USER) применяется только к последующим операторам в pipe (он же mergeMap после него).

...