Как испустить два действия для ответа ajax в наблюдаемом эпосе - PullRequest
1 голос
/ 14 июня 2019

У меня есть редуцируемый наблюдаемый эпос, который отображает ответ 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 Ответ

1 голос
/ 14 июня 2019

Вместо map вы можете использовать mergeMap (также будет работать concatMap) и возвращать массив из его обратного вызова:

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

Внутри обратного вызова вы можете поместить любую нужную логикуэто делает любой массив, который вы хотите.Массив, который вы возвращаете, автоматически повторяется на mergeMap, и каждый элемент переиздается как отдельная эмиссия.

...