让我们考虑以下简化的情况:
- 我们有一个类型为Observable < Apple >的可观测对象apples
- 每个Apple对象都有一个isRotten()方法,该方法返回一个类型为Observable < Boolean >的可观测对象,保证至少发出一个布尔值。
我想要过滤掉腐烂的苹果。更准确地说,只有当A.isRotten()发出的第一个布尔值为false时,才认为苹果A通过了筛选。最佳实现方法是什么?
经过一些思考,我想到了以下解决方案:
apples
.concatMap(apple =>
apple.isRotten()
.first()
.filter(bool => bool)
.map(bool => apple))
这段代码是用JavaScript编写的(... => ... 是一个函数)。虽然它能够运行,但我认为这样写有些冗长且难以理解。是否有更好的方法来处理这种情况呢?