将可观察变量与逻辑AND运算符组合

时间:2019-11-18 19:32:07

标签: angular rxjs

我有两个可观察对象(映射到两个REST调用)和一个主题(映射到用户交互),我想将它们的结果合并为一个可观察对象。

默认情况下,所得的可观察值应为false,如果所有可观察值都为true,则为true。

我对要使用哪种RXJS方法感到困惑。我认为我必须使用combineLatest,但不确定如何使用。

this.result$ = combineLatest(
    this.obs1$.pipe(
        take(1),
        map(result => result.wasSeen)
     ),
     this.obs2$.pipe(
        take(1)
     ),
     this.subj1$).pipe(
       //
      , startWith(false)
     )
);

1 个答案:

答案 0 :(得分:2)

您在正确的轨道上。

this.result$ = combineLatest([
 this.obs1$.pipe(
    map(result => result.wasSeen),
 ),
 this.obs2$,
 this.subj1$
]).pipe(
   map([b1, b2, b3] => b1 && b2 && b3),
);

请勿执行take(1)。如有必要,请使用forkJoin代替combineLatest