在redux-observable史诗中,为什么我们可以过滤类型的动作流但仍然可以访问另一种类型的动作流

问题描述 投票:0回答:1

在redux-observable官方文档的cancellation examples中,我们首先通过类型过滤动作流动作$,然后使用另一种类型的动作流来竞争ajax调用。我不明白如何将FETCH_USER_CANCELLED类型的action $传递给第一个类型(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),
  ...

如果有人可以解释,将不胜感激。

rxjs race-condition redux-observable cancellation
1个回答
0
投票

在上面的例子中,您使用未经过滤的action$流两次。 ofType(FETCH_USER)过滤器仅适用于pipe中的后续运算符(也就是后面的mergeMap)。

© www.soinside.com 2019 - 2024. All rights reserved.