我在后端使用Angular 7和SignalR进行推送通知。一段时间后,我收到大量通知,我的应用程序被完全阻止。
signalR服务组件:
stateChangeNotifier = new Subject<string>();
hubConnection.on("StateChanged", (state: string) => {
this.stateChangeNotifier.next(state); // this fire enormous number of notification which block application
});
订阅事件的另一个组件:
stateChangeNotifier.subscribe(result => {
// here is enormous number of notification
});
有什么办法可以在单独的线程中处理那些通知,还是以某种方式收集它们并每隔一两秒钟只处理最后一个通知?
答案 0 :(得分:0)
根据我的评论,如果您只想在一段时间没有事件后才发出,则应使用debounceTime
运算符
private stateChange = new Subject<string>();
stateChangeNotifier = stateChange.asObservable().pipe(
debounceTime(500)
);
hubConnection.on("StateChanged", (state: string) => {
this.stateChange .next(state);
});