当同一类型的第二个动作同时发生时,Epic忽略第一个承诺的结果

问题描述 投票:0回答:1

我的史诗:

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
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.