RxJava与最后一项的emmision取得联系?

pix*_*xel 9 java rx-java

是否有可能在takeUntil操作员中发出符合条件的物品?

pau*_*aul 9

嗯,我不确定我是否理解你的问题.像这样的东西?

@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);

}
Run Code Online (Sandbox Code Playgroud)

它会打印出来

 1
 2
 3
 4
Run Code Online (Sandbox Code Playgroud)

你可以看到更多的例子来点这里https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/filtering/ObservableTake.java


yur*_*gis 6

final String stop = "c";
Observable.just("a", "b", "c", "d")
          .filter(item -> !item.equals(stop))
          .takeUntil(item -> item.equals(stop))
          .subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出:

c
Run Code Online (Sandbox Code Playgroud)


vey*_*dan 6

使用此解决方案,谓词仅需调用一次。

final String stop = "c";
Observable.just("a", "b", "c", "d")
          .takeUntil(item -> item.equals(stop))
          .lastElement()
          .subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出:

c
Run Code Online (Sandbox Code Playgroud)