🐟
[Angular][RxJS][NgRx] 複数のObservableをSubscribeする
通常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()
の引数では配列で受け取ります。
参考
Discussion