Я пытаюсь отправить действие SET_MIDDLEWARE_TYPE с помощью payload.type = 'observable', подождать 5 секунд, а затем выполнить вызов API. В настоящее время действие SET_MIDDLEWARE_TYPE не отправляется. Если я удалю задержку и mergeMap, он отправит это действие.
Ожидается: FETCH_USER_WITH_OBSERVABLE_REQUEST -> SET_MIDDLEWARE_TYPE (подождите 5 секунд) -> FETCH_USER_WITH_OBSERVABLE_SUCCESS
Фактическое: FETCH_USER_WITH_OBSERVABLE_REQUEST -> (подождите 5 секунд) -> FETCH_USER_WITH_OBSERVABLE_SUCCESS
Как я могу добиться ожидаемого поведения?
Код:
import { Observable } from 'rxjs';
import { githubApi } from './api';
const githubEpic = action$ =>
// Take every request to fetch a user
action$.ofType('FETCH_USER_WITH_OBSERVABLES_REQUEST')
.mapTo(({ type: 'SET_MIDDLEWARE_TYPE', payload: { type: 'observable'} }))
// Delay execution by 5 seconds
.delay(5000)
// Make API call
.mergeMap(action => {
// Create an observable for the async call
return Observable.from(githubApi.getUser('sriverag'))
// Map the response to the SUCCESS action
.map((result) => {
return {
type: 'FETCH_USER_WITH_OBSERVABLES_SUCCESS',
payload: { result } ,
};
});
});
export default githubEpic;