首页 > 解决方案 > 当具有相同类型的第二个动作同时发生时,Epic 会忽略第一个承诺的结果

问题描述

我的史诗:

const myEpic: Epic<any, any> = action$ =>
  action$.ofType(MY_ACTION_TYPE).switchMap(action => {
    console.log("begin get ");
    return Observable.fromPromise(api.get()).map(
      response => {
        console.log("end get ");
        return resultLoaded(action.param, response);
      }
    );
});

然后在一段时间内,我产生了两个具有相同类型 MY_ACTION_TYPE 但具有不同参数的动作。结果在控制台:

begin get
begin get
end get

为什么缺少第二个“最终获得”?

标签: redux

解决方案


将 switchMap 更改为 mergeMap 解决了这个问题。

关于 switchMap 的文档:与 mergeMap() 类似,但是当源 observable 发出时,取消对内部 observable 的任何先前订阅。


推荐阅读