在{redux-observable官方文档的cancellation examples中,我们首先按类型过滤操作流action $,然后将ajax调用与其他类型的操作流进行竞争。 我不明白如何将FETCH_USER_CANCELLED类型的action $通过第一个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),
...
如果有人可以解释,将不胜感激。
答案 0 :(得分:0)
在上面的示例中,您两次使用了未经过滤的action$
流。 ofType(FETCH_USER)
过滤器仅适用于pipe
中的后续运算符(也就是其后的mergeMap
)。