redux - 当具有相同类型的第二个动作同时发生时,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
为什么缺少第二个“最终获得”?
解决方案
将 switchMap 更改为 mergeMap 解决了这个问题。
关于 switchMap 的文档:与 mergeMap() 类似,但是当源 observable 发出时,取消对内部 observable 的任何先前订阅。
推荐阅读
- c# - 使用 C# 使用调酒师动态更改数据源
- python - 将字典添加到字典或列表中会显示重复项
- json - 使用条件语句的 json 模式定义
- r - kable/kableExtra 为 group_rows 中的组标签添加上标
- java - 设计如何在列表中存储大对象
- elasticsearch - Hibernate Search 查询中 fullTextQuery.getResultList() 上的 com.google.gson.JsonArray.getAsString 错误
- android - 找不到任何带有 altbeacon android 的信标
- java - 使用从枚举初始化的字符串常量的 Switch Case 问题
- java - 在不同的监听器之间切换
- xamarin - 如何在 Xamarin Forms 中更改 SearchBar 键盘中的“搜索”按钮文本?