如何在Redux可观察到的史诗中为Ajax响应发出两个动作

时间:2019-06-14 10:50:10

标签: reactjs redux rxjs redux-observable

我有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调用中得到的响应来使该操作有条件?

1 个答案:

答案 0 :(得分:1)

您可以使用map代替mergeMapconcatMap也可以使用)并从其回调中返回一个数组:

mergeMap((response) => [
  otherAction(),
  createSuccess(response.response),
]),

在回调内部,您可以放置​​所需的任何逻辑,以构成所需的任何数组。您返回的数组会由mergeMap自动进行迭代,并且将每个项目重新发射为单独的发射。