На 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 *****/
);
}),
);
};