过多的通知事件阻止了Angular应用

时间:2019-04-18 12:45:48

标签: javascript angular signalr

我在后端使用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
});

有什么办法可以在单独的线程中处理那些通知,还是以某种方式收集它们并每隔一两秒钟只处理最后一个通知?

1 个答案:

答案 0 :(得分:0)

根据我的评论,如果您只想在一段时间没有事件后才发出,则应使用debounceTime运算符

private stateChange = new Subject<string>();

stateChangeNotifier = stateChange.asObservable().pipe(
  debounceTime(500)
);


hubConnection.on("StateChanged", (state: string) => {
  this.stateChange .next(state); 
});