RxJava用最后一项的emmision作为结果吗?

时间:2016-07-04 11:21:22

标签: java rx-java

是否有可能在takeUntil运算符中发出满足条件的项目?

3 个答案:

答案 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