【发布时间】:2018-05-26 12:17:02
【问题描述】:
是否有可能在takeUntil 运算符中发出满足条件的项目?
【问题讨论】:
-
有 Observable.last() 和 lastOrDefault() 运算符 - 你可以在 Observable.takeUntil() 之后添加它
是否有可能在takeUntil 运算符中发出满足条件的项目?
【问题讨论】:
嗯,不确定我是否理解您的问题。像这样?
@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
【讨论】:
Observable<String>,我有.takeUntil("foo".equals(myString)),我想得到最后一个发出的项目。
使用此解决方案,谓词只需调用一次。
final String stop = "c";
Observable.just("a", "b", "c", "d")
.takeUntil(item -> item.equals(stop))
.lastElement()
.subscribe(System.out::println);
输出:
c
【讨论】:
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
【讨论】: