ngxs - 在 switchMap 中调度 ngxs 操作忽略返回值
问题描述
必须有一个标准的方法来解决这个问题,但我还没有找到任何东西。我可能没有正确表达我的搜索。
我有一个搜索输入字段,作为一种好的做法,switchmap
当用户继续输入时,我使用运算符取消以前的 http 请求。
我以 ngxs 文档中的示例为基础:
this.actions$
.pipe(
ofActionDispatched(SomeAction),
debounceTime(2000),
distinctUntilChanged(),
untilDestroyed(this),
switchMap(() => {
return this.store.dispatch(new SomeOtherAction());
})
).subscribe(() => {
});
SomeAction
每次用户在输入字段中键入内容并保存在商店中时都会调度(这就是为什么SomeOtherAction
没有构造函数参数)。
如果没有这个空的订阅块,有没有更好的方法来做到这一点?这看起来像一个反模式。
解决方案
您可以考虑的另一种方法是仅在您等searchText
之后调度操作以更改状态。debounce
在搜索输入表单控件上使用Observable,您可以在调用您的操作以修改状态之前valueChanges
通过管道debounce/distinct/filter
或任何适合您目的的组合。store.dispatch
然后,您只需将状态修改为所需的最少时间,而不是每次按键,并且还可以从那里调用 HTTP 请求(我认为您不需要组件中的操作流订阅)。
Angular 表单的 DocovalueChanges
在这里
推荐阅读
- node.js - Bitstamp 认证 API hmac
- kubernetes - 即使成功启用 Bolt,也无法建立与 Neo4j 使用螺栓方案的连接
- sharepoint - 如何禁用/隐藏将新文件上传到文档集后弹出的编辑表单(SP 2016)
- javascript - 如何在我在 javascript 中使用 DOM 创建的元素中使用 InnerHTML 添加内容
- c++ - 文件系统:错误无法删除:输入/输出错误
- java - MyBatis: IllegalArgumentException: Mapped Statements 集合不包含值
- python-3.x - Pandas Python groupby多列 - 根据具有特定值的第一列按第2列中的值对行进行排序
- python - 无法使用 plotly 创建 HTML 文件
- node.js - Discord.js 组件
- python - 在 wxPython 中使用 TextCtrl 对 StaticText 进行分组