让我们考虑以下简化的情况:
- 我们有一个 Observable apples 类型的 Observable < Apple >
- 每个 Apple 对象都有一个 isRotten() 方法,它返回一个 Observable < Boolean > 类型的 observable,它保证发出至少一个布尔值。
我想过滤可观察到的苹果,使烂苹果不通过过滤器。更准确地说,当且仅当 A.isRotten() 发出的第一项为 false 时,苹果 A 通过过滤器。实现此过滤器的最佳方法是什么?
经过一番思考,我可以想出这个:
apples
.concatMap(apple =>
apple.isRotten()
.first()
.filter(bool => bool)
.map(bool => apple))
这是用javascript编写的。( ... => ... 是一个函数)。这行得通,但我认为它相当冗长且难以理解。有没有更好的方法来做这种事情?