当具有相同类型的第二个动作同时发生时,史诗忽略第一个承诺的结果

时间:2019-02-27 07:52:14

标签: redux

我的史诗:

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

为什么缺少第二个“终点”?

1 个答案:

答案 0 :(得分:0)

将switchMap更改为mergeMap即可解决问题。

关于switchMap的文档: 类似于mergeMap(),但是当源可观察对象发出时,取消内部可观察对象的所有先前预订。