Я реализую шаблон публикации и подписки, используя службу Angular и RxJS Subject.Служба, если она запущена с обновлениями из бэкэнда, должна фильтровать эти обновления так, чтобы любой данный компонент получал только те обновления, на которые он подписан.Может быть проще, если я приведу свой рабочий пример.
Вот код службы:
public getUpdates(updatesIWant: UPDATE[]): Observable<UPDATE[]> {
return this.updateSubject.pipe(
map(updates => updates.filter(update => updatesIWant.indexOf(update) != -1)));
}
А вот код компонента:
this.updateService.getUpdates(this.updatesIWant).subscribe(updates => {
this.processUpdates(updates);
}
Это работает, но при получении тысяч обновлений в секунду это становится неэффективным.Как я могу оптимизировать этот шаблон?Есть ли способ, которым я могу включить пользовательский оператор rxjs, который будет выполнять эту работу, или, возможно, веб-работник?