2016-07-04 8 views

Antwort

3

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

+0

Sagen wir, ich habe 'Observable ' und ich habe '.takeUntil (" foo ".equals (myString))' und ich möchte dieses letzte ausgesendete Element bekommen. – pixel

+0

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

4
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 
+0

was ist, wenn meine Logik wirklich beteiligt ist und ich nicht will zweimal wiederholen? – dabluck

+0

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

+0

, aber mit dieser Lösung müssen Sie diese Methode zweimal aufrufen und alle Arbeit zweimal. – dabluck

Verwandte Themen