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