Epic, чтобы наблюдать некоторые API потерпели неудачу (действие отправки после takeUntil) - PullRequest
0 голосов
/ 03 ноября 2018

На componentDidMount() я вызываю действие с типом CALL_MULTI_API, которое открывает загрузочный счетчик (openLoading()) и вызывает действия (getUsers() и getCompanies()),
эти 2 действия в свою очередь вызовут API, и у них есть три типа действий (например: GET_USERS, GET_USERS_SUCCESS, GET_USERS_FAILED.

При успешном выполнении API закрывает спиннер загрузки. Но даже если один API не работает, мне все равно нужно закрыть загрузчик и открыть предупреждение, чтобы подсказать пользователю, почему он не работает.

Пожалуйста, гильдия, я могу утешить 'OK' в mergeMap(), но действия closeLoading() и openAlert('something wrong!'), похоже, не отправляются.

    export const initActionEpic = (action$, $state$) => {
    return action$.pipe(
        ofType('CALL_MULTI_API'),
        switchMap((action) => {
        return concat(
            of(
            openLoading(),
            actions.getUsers(),
            actions.getCompanies(),
            ),
            zip(
            action$.pipe(ofType('GET_USERS_SUCCESS'), take(1)),
            action$.pipe(ofType('GET_COMPANIES_SUCCESS')), take(1)),
            ).pipe(mapTo(closeLoading())),
        ).pipe(
            /***** this part don't work *****/   
            takeUntil(action$.pipe(
            ofType(
                'GET_USERS_FAILED',
                'GET_COMPANIES_FAILED',
            ),
            mergeMap((ss) => {
                console.log('OK')
                return concat(
                of(closeLoading()),
                of(openAlert('something wrong!'))
                );
            })
            )),
            /***** this part don't work *****/   
        );
        }),
    );
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...