【问题标题】:RXJS - Angular : Two Observable<booleans> should return Observable<boolean>RXJS - Angular:两个 Observable<booleans> 应该返回 Observable<boolean>
【发布时间】:2019-12-25 17:59:45
【问题描述】:

我想评估两个observable&lt;boolean&gt;,我想将流程保存在另一个observable&lt;boolean&gt;中。

我尝试了combineLatest(obs1$, obs2$);,但它生成了一个observable&lt;[boolean, boolean]&gt;

有没有比combineLatest 更好的函数来评估两个可观察对象并返回另一个observable&lt;boolean&gt;

【问题讨论】:

    标签: angular rxjs combinelatest


    【解决方案1】:

    如果要将结果合并到单个流中,请使用merge() from 'rxjs'。 如果你想对两者都执行逻辑操作:

    结合最新接受的项目函数作为最后一个参数,例如 combineLatest(obs1$, obs2$, ([first, second]) =&gt; first || second) ;

    它已被弃用。所以你需要使用map

    combineLatest(obs1$, obs2$,).pipe(
        map([first, second]) => first || second)
    );
    

    【讨论】:

    • resultSelector 已被弃用,我收到建议我应该使用pipeoperator
    • 我不知道弃用。答案已更新。
    【解决方案2】:

    我认为您可以在此处使用forkJoin,您需要使用map 运算符将这两个可观察值映射为一个值。

    forkJoin([observable1, observable2]).pipe(
        map(([bool1, bool2]) => {
            return bool1 & bool2;
        })
    );
    

    【讨论】:

    • Fork join 是一个非常特殊的运算符。 mergezipcombineLatest 也应考虑在内。
    • @kvetis 他们当然应该是。感谢您强调这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2021-12-20
    • 2021-11-14
    • 1970-01-01
    • 2019-06-09
    • 2019-08-05
    相关资源
    最近更新 更多