>我有 redux 可观察的史诗,它将 AJAX 响应映射到单个操作("createSuccess"(:
export const create = (action$) => {
return action$.pipe(
ofType(CREATE_REQUEST),
mergeMap(action => {
return ajax({...}
).pipe(
map((response) => createSuccess(response.response)),
catchError(error => of(createFailure(error)))
);
})
);
};
除了创建成功之外,我如何触发不同的操作(我们称之为重定向(?另外,是否可以根据我从 ajax 调用中获得的响应使该操作有条件?
您可以使用mergeMap
而不是map
(concatMap
也可以工作(并从其回调返回一个数组:
mergeMap((response) => [
otherAction(),
createSuccess(response.response),
]),
在回调中,您可以放置任何您想要的逻辑,从而制作您想要的任何数组。您返回的数组会自动迭代mergeMap
并且每个项目都作为单独的发射重新发出。