在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),
...
如果有人可以解释,将不胜感激。
在上面的例子中,您使用未经过滤的action$
流两次。 ofType(FETCH_USER)
过滤器仅适用于pipe
中的后续运算符(也就是后面的mergeMap
)。