Angular サービスと RxJS サブジェクトを使用してパブリッシュとサブスクライブのパターンを実装しています。サービスは、バックエンドからの更新でファイアホースされている場合、これらの更新をフィルター処理して、特定のコンポーネントがサインアップした更新のみを取得するようにする必要があります。私の作業例を挙げれば簡単かもしれません。
サービスコードは次のとおりです。
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);
}
これは機能しますが、1 秒間に何千もの更新を受信すると非効率になります。このパターンを最適化するにはどうすればよいですか? 仕事をするカスタム rxjs オペレーター、またはおそらく Webworker を組み込む方法はありますか?