Gibt es eine Möglichkeit, Artikel zu emittieren, die die Bedingung in takeUntil
Operator erfüllen?RxJava takeUntil mit Auslösung des letzten Artikels?
Antwort
Mmmm nicht sicher, ob ich Ihre Frage verstehe. Etwas wie das?
@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);
}
wird es
1
2
3
4
drucken Sie weitere Beispiele hier Nehmen Sie sehen von https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/filtering/ObservableTake.java
Sagen wir, ich habe 'Observable
Dann würde ich .filter (s-> s.equals ("foo") verwenden Ich denke, ist besser, wenn Sie Ihren Code zur Verfügung stellen, was Sie tun möchten – paul
final String stop = "c";
Observable.just("a", "b", "c", "d")
.filter(item -> !item.equals(stop))
.takeUntil(item -> item.equals(stop))
.subscribe(System.out::println);
Ausgang:
c
was ist, wenn meine Logik wirklich beteiligt ist und ich nicht will zweimal wiederholen? – dabluck
Wenn Sie Logik für Filter und takeUntil meinen, dann kapseln Sie es in einer booleschen Methode und übergeben Sie das Element an sie. – yurgis
, aber mit dieser Lösung müssen Sie diese Methode zweimal aufrufen und alle Arbeit zweimal. – dabluck
gibt es Observable.last() und lastOrDefault() -Operatoren - Sie können es nach O hinzufügen bservable.takeUntil() –