是否有可能在takeUntil
运算符中发出满足条件的项目?
答案 0 :(得分:8)
嗯,我不确定我是否理解你的问题。像这样的东西?
@Test
public void tesTakeUntil() {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Observable.from(numbers)
.takeUntil(number -> number > 3)
.subscribe(System.out::println);
}
它会打印
1
2
3
4
您可以看到更多以此为基础的示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/filtering/ObservableTake.java
答案 1 :(得分:5)
final String stop = "c";
Observable.just("a", "b", "c", "d")
.filter(item -> !item.equals(stop))
.takeUntil(item -> item.equals(stop))
.subscribe(System.out::println);
输出:
c
答案 2 :(得分:3)
使用此解决方案,只需要调用一次谓词。
final String stop = "c";
Observable.just("a", "b", "c", "d")
.takeUntil(item -> item.equals(stop))
.lastElement()
.subscribe(System.out::println);
输出:
c