我有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)))
);
})
);
};
除了createSuccess之外,我还如何触发其他操作(称为重定向)?另外,是否有可能根据我从ajax调用中得到的响应来使该操作有条件?
答案 0 :(得分:1)
您可以使用map
代替mergeMap
(concatMap
也可以使用)并从其回调中返回一个数组:
mergeMap((response) => [
otherAction(),
createSuccess(response.response),
]),
在回调内部,您可以放置所需的任何逻辑,以构成所需的任何数组。您返回的数组会由mergeMap
自动进行迭代,并且将每个项目重新发射为单独的发射。