angular - 如何防止 rxjs 管道运算符循环通过两个用户/系统定义的输入
问题描述
我将 Angular 与 Ngrx 一起使用。我目前有一个从商店加载数据的数据源,但如果找不到,将对后端进行服务调用以获取所需的数据。
我的问题是,每当我将新参数传递给 DataSource 中的 load 方法时,它都会循环遍历先前的值和新值(例如 1、2、1、2、1、2 ......)
到目前为止,使用 rxjstake(1)
运算符,这会停止无限循环,但有时之前的数据是被映射的数据,而不是新的数据。
我曾尝试在线搜索如何/为什么会发生这种情况,但没有找到,或者我只是使用了错误的关键字。
这就是我上面提到的加载方法
load(departmentId: number) {
this.store.pipe(
take(50),
select(selectDepartmentSignatories(departmentId)),
tap((signatories: SignatoryListItem[]) => {
if (!!signatories && signatories.length > 0) {
//map signatory details
} else {
this.store.dispatch(DepartmentSignatoriesRequested({ payload: { departmentId } }));
}
})
).subscribe();
}
编辑:在 else 语句中添加了动作调度
解决方案
您应该分派加载操作,并且逻辑应该生效。轻敲你的逻辑并不是他们做事的方式。
推荐阅读
- server - 服务器名称在托管程序中未更改
- r - 使用贝叶斯优化时 Cholesky 分解的错误
- unit-testing - 如何为 ElectStateContext 创建模拟对象以测试 Hangfire 过滤器?
- wordpress - 当他们在 WooCommerce 中购买 x 数量的特定产品类别时,根据用户角色应用折扣
- excel - 我想从最左侧的列表中替换段落中的“Ballarini pentola”一词
- javascript - 使用 Parcel 有条件地加载 Javascript 不起作用
- javascript - JS无法连接MySQL数据库
- javascript - 使用 node.js 读取/写入类型化数组到文件
- c++ - 如何在 C++ 中获取 std:vectors 的频率?
- javascript - 如何在javascript中过滤嵌套对象属性并打印新对象