angular - rxjs 是否提供了解决去抖动缓冲区实现的更好方法
问题描述
对于 Angular 应用程序,我遇到这样一种情况,即容器组件正在解析仪表板中各种子组件小部件所做的查询。为了提高性能,我想缓冲这些查询,以便可以将它们组合成对服务器的单个请求。因为每个小部件都有自己的加载过程,所以它发送查询的时间可能会有所不同。
我想要实现的功能是,对于由其中一个小部件发出的任何查询,我想等待 200 毫秒以等待发出任何其他小部件查询,同时确保该序列中的所有查询都被缓冲。
我目前有以下方法来解决这个问题:
const queryRecord$ = new Subject<void>();
queries$
.pipe(
tap(() => queryRecord$.next()),
buffer(queryRecord$.pipe(debounceTime(200))),
mergeMap(queries => fetcher.fetch(flatten(queries))),
)
.subscribe(metrics => {
// do something
});
我不禁觉得必须引入一个额外的主题是不对的,但我也想不出另一种方法来做到这一点。
任何人都可以帮助我提出更好的方法来获得相同结果的建议吗?
注意:我已经尝试过bufferTime
,但这并不是我想要的,因为它会继续运行 200 毫秒的间隔。
解决方案
推荐阅读
- formsflow.ai - 使用工作流“电子邮件通知”创建的表单
- java - 带有传统 Java 的 keycloak:一个简单的 api 示例?
- arrays - Ruby 中的数组解构
- python - 气流任务状态失败,“重试”参数> 0
- javascript - 我创建了随机密码生成器。它接受数字并打印该长度的随机密码。它在控制台上打印密码但被刷新
- c# - 事件侦听器不适用于 firebase 查询
- java - Spring Boot 中的邮件发送异常
- xamarin.forms - Xamarin Forms Prism (DialogService) with Switch in ListView items - EventToCommandBehaviour 触发多次
- reactjs - 如何打破 MUIDataTable 列单元格内容
- python - 如何在硒(python)中关闭标签广告