🐟

[Angular][RxJS][NgRx] 複数のObservableをSubscribeする

2022/12/08に公開

通常subscribe()は一つのObservableを処理します。
下記のようにNgRx/SelectorでObservableを複数取得して、一度のSubscribeで処理するには、zip()を使います。
zipは複数のObservableを組み合わせて一つのObservableとして返すOperatorです。
💡 注意 : zipはRxJS8で非推奨となりました。代わりにzipWithを使ってください。

const isAuth$ = this.store.select(getIsAuth);
const isAuthAdmin$ = this.store.select(getIsAuthAdmin);

zip(isAuth$, isAuthAdmin$).subscribe(([isAuth, isAuthAdmin]) => {
  if (isAuth) {
	 処理
  } else if (isAuthAdmin) {
	  処理
  }
})
return 処理;
  • zip()を使うことで、複数のObservableを配列として返します。
  • subscribe()の引数では配列で受け取ります。

参考

https://qiita.com/kubocchi/items/3029af8230762d3bd748
https://learn-rxjs-for-angular.info/docs/observable-and-operator/creation-operators/zip/
https://rxjs-dev.firebaseapp.com/api/index/function/zip

Discussion