gpt4 book ai didi

rxjs - 通过可观察对象过滤可观察对象

转载 作者:行者123 更新时间:2023-12-04 11:34:27 24 4
gpt4 key购买 nike

让我们考虑以下简化的情况:

  • 我们有一个 Observable < Apple >
  • 类型的 Observable 苹果。
  • 每个 Apple 对象都有一个 isRotten() 方法,它返回一个 Observable < Boolean > 类型的 observable,它保证至少发出一个 bool 值。

  • 我想过滤可观察到的苹果,这样腐烂的苹果就不会通过过滤器。更准确地说,当且仅当 A.isRotten() 发出的第一项为假时,苹果 A 通过过滤器。实现此过滤器的最佳方法是什么?

    经过一番思考,我可以想出这个:
    apples
    .concatMap(apple =>
    apple.isRotten()
    .first()
    .filter(bool => bool)
    .map(bool => apple))

    这是用javascript编写的。 ( ... => ... 是一个函数)。这有效,但我认为它相当冗长且难以理解。有没有更好的方法来做这种事情?

    最佳答案

    你所拥有的很好,而且,我想不出更简洁的方法来做到这一点。我可能会使用 flatMap而不是 concatMap如果无序的苹果不是问题。

    如果可读性对您来说是个问题,只需将实现移到它的一个函数中(例如 filterObservable 接受一个函数,该函数接受一个值并返回一个 IObservable<bool> )

    关于rxjs - 通过可观察对象过滤可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546272/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com