2017-04-18 4 views
0
public class ReactiveExample { 

    public static void main(String[] args) throws InterruptedException, NumberFormatException, UnsupportedEncodingException { 

     Observable.range(1, 5).subscribe(
       System.out::println, 
       error -> System.out.println("error"), 
       () -> System.out.println("completed") 
     ); 

    } 

} 

Das Ergebnis, das ausgedruckt wird, ist [email protected]ReactiveX Java-Prozess vorzeitig beendet?

Nach der beobachtbare gedruckt wird, erhalte ich:

Process finished with exit code 0.

Ich habe gerade mit ReactiveX angefangen und habe ein paar Tutorials verfolgt. Meine Annahme war, dass der obige Code kontinuierlich Daten als solche streamen wird:

1-2-3-4-5-1-2-3-4-5... und weiterhin den Wert drucken. Warum stoppt mein Programm sofort? Beendet es gerade, nachdem die ersten 5 Ziffern beobachtet wurden? Wie kann ich dies ändern, um kontinuierlich Werte zu streamen und sie zu drucken, während diese Werte durchlaufen werden? Außerdem, wie drucke ich tatsächlich die Werte anstelle der beobachtbaren Objektreferenz?

+0

Da der Bereich abgeschlossen ist, wenn es das Ende des Bereichs erreicht – EpicPandaForce

Antwort

1

range: Returns an Observable that emits a sequence of Integers within a specified range.

So ist Ihre Annahme falsch. range wiederholt nichts. Dazu müssen Sie repeat

verwenden.
Observable.range(1, 5).repeat().subscribe(
    System.out::println, 
    error -> System.out.println("error"), 
() -> System.out.println("completed") 
); 
Verwandte Themen