のは、私が観測の観測可能なリストを持っているとしましょう:観測可能な観測可能な配列<boolean>と観察可能な<boolean[]>を組み合わせる - 私はこれを正しく行っていますか?
const a = [Observable.of(false), Observable.of(false)];
const aSbj: Observable<Array<Observable<boolean>>> = new BehaviorSubject(a);
私は[]ブールの観察可能に内のすべての観測を組み合わせたいです。ここで(活字体を使用して)私の考えです:
const listObs = aSbj
.switchMap((observables: Array<Observable<boolean>>) => {
return Observable.combineLatest(...observables);
});
これが動作しているようですし、私が望む結果を得ることができますが、私の質問は以下のとおりです。
- 私が正しくswitchMapを理解するだろうか?
- aSbjが発生するたびに新しいObservableが作成されますか?これはパフォーマンスに大きな影響を与えますか?
(コンテキスト:)
私の究極の目標は、任意の()値にブール値のリスト全体をマッピングすることです。そのような私が変更されたときにことを...
const anyObs = listObs.map((booleans) => {
return booleans.some(i => i)
});
aSbj、anyObsは適切な値を出力します:
const any;
anyObs.subscribe((anyVal) => any = anyVal); // any == false
aSbj.next([Observable.of(true), Observable.of(false)]);
// any == true
あなただけの 'ブール値をマップしたい場合は[ ] 'を' '' 'valueに変換すると、' 'boolean''自体は' Observable'である必要はありません。彼らがどんな理由?あなたは 'bools $ = Observable.of([false、false、false]);を実行することができます。任意の$ = bool $ .map(arr => arr.some(b => b)); ' –
少し質問を抽象化しましたが、Observableが必要です。個々のブール値がトグルグループ内のトグル状態を表し、トゥルー状態が時間とともに変化するとします。 –
「Observable」のようにはまだ見えません。配列のn番目の要素がn番目のトグルの状態になっているような場合は、それら自身のサブジェクト( 'bool_subjects:Array >')を通して個々の更新をプッシュします。次にObservable.combineLatest(bool_subjects).map((bool)=> bool.some(b => b)) 'を実行します。 –
concat