angular - 如何合并来自 2 个 ngrx 效果的数据
问题描述
我有 2 种效果,其中两种效果都在不同的用户操作中调用。它们具有相同的返回类型。我想将来自 1 个效果的数据合并到另一个效果数据中。(然后删除其中的重复记录)
loadQueues$ = this.actions$.ofType(qeueActions.LOAD_QUEUE_DETAILS).pipe(
map((action: qeueActions.LoadQueues) => action.payload),
switchMap( (criteria) => {
return this.api.listMessagesByCriteria(criteria).pipe(
map( data => new qeueActions.LoadQueuesSuccess(data)),
catchError(error => of(new qeueActions.LoadQueuesFail(error)))
);
})// switchMap
); // pipe
第二个效果是
@Effect()
loadQueuesByDuration$ =
this.actions$.ofType(qeueActions.LOAD_QUEUE_DETAILS_BY_DURATION).pipe(
map((action: qeueActions.LoadQueuesbyDuration) => action.payload),
switchMap( (duration) => {
return this.api.listMessageHeadersByDuration(duration).pipe(
map( data => new qeueActions.LoadQueuesSuccess(data)),
catchError(error => of(new qeueActions.LoadQueuesFail(error)))
);
})// switchMap
); // pipe
两个成功调用都是一样的。(所以就像将当前数据合并到以前的数据中)我们如何实现上述2个效果数据的合并?
解决方案
从和中删除@Effect()
装饰器。loadQueuesByDuration$
loadQueuesByDuration$
@Effect()
然后使用装饰器创建第三个变量:
import { merge } from 'rxjs';
...
@Effect()
loadQueuesMerged$ = merge(this.loadQueues$, this.loadQueuesByDuration$).pipe(
// logic to remove duplicates
);
推荐阅读
- c - 查找数组中的最小值
- javascript - 在 Fullcalendar V5 上使用 Ajax 从数据库中获取事件后未显示事件
- java - 如何在不删除其内容的情况下写入二进制文件?(JAVA)
- ansible - 在 ansible 库存中安全地使用凭据
- r - 从 R 中的 library(stringr) 中删除空字符串
- c++ - 当它甚至不执行函数时超出了 C++ 时间限制
- jar - .jar 文件在构建后不运行
- excel - 在单元格中环绕文本会在附近的单元格中添加第二个复选框
- python - 如何在序列化程序(帖子)中将多个相同项目添加到购物车?
- javascript - Music Bot discord.js 问题,无法读取未定义的属性“声音”