angular - 多个通知时延迟来自 behaviorSubject 的下一次调用 - Angular,Rxjs
问题描述
在我的 Angular 应用程序中,我将状态 作为BehaviorSubject存储在服务中,当数据来自服务器时,我调用下一个函数来更新数据并通知所有订阅者。
伪代码:
ajaxCall_1 -> updateData(response2)
ajaxCall_2 -> updateData(response2)
ajaxCall_3 -> updateData(response3)
...
private data$:Observable<any>;
public updateData(newData){
var currentData = data$.value;
data$.next({...currentData , ...newData})
}
由于很多组件订阅了该 BehaviorSubject,我认为当我的应用程序加载时它可能会导致一些性能问题:加载时有很多来自服务器的通知,并且每次调用下一个函数时组件都在渲染。
你认为如果我在 500 毫秒后将呼叫延迟到下一个,我会看到性能提升吗?rxjs 延迟下一次通话的方式是什么?
解决方案
性能影响将来自订阅该 BehaviorSubject 的组件而不是其本身。
无论如何,您可以使用延迟运算符来延迟下一个呼叫,如下所示:
private sub$ = new BehaviorSubject<any>(null);
public data$ = this.sub$.pipe(delay(500)));
public updateData(newData){
var currentData = sub$.value;
sub$.next({...currentData , ...newData})
}
推荐阅读
- angular - 为什么 Angular CLI 在 HTTPS 上打开我的网站
- react-native - 如何在 React Native 中制作类似 Instagram 的响应式设计?
- javascript - 广告移除后修补 DOM - chrome 扩展
- java - 使用异步任务时光标变为空?
- java - 如何在 AWS ECS 中增加 Java 堆大小?
- java - Maven 错误 Pom.xml - frontend-maven-plugin
- javascript - 将状态重置为初始值,而不是最近更新的状态
- python - 如何将列表的值与同一列表中的其他值进行比较?
- android - Android:如何在recyclerview中显示来自外部存储或厨房的视频列表
- reactjs - 反应本机文本输入中的 OnChangeText 未按预期工作