我正在尝试发送' 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;
答案 0 :(得分:2)
执行SET_MIDDLEWARE_TYPE
时,您将放弃mergeMap
操作。请注意您传递到名为mergeMap
的{{1}}的参数?除非你传播它,否则它无法进一步向下游。
您需要将其添加到传出流中。我建议你改为:
action