Java-процесс ReactiveX завершается раньше?

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

    }

}

Выводится результат rx.internal.util.ScalarSynchronousObservable@2fad386b

После того, как наблюдаемое напечатано, я получаю:

Process finished with exit code 0.

Я только начал работать с ReactiveX и следил за несколькими руководствами. Мое предположение заключалось в том, что приведенный выше код будет непрерывно передавать данные как таковые:

1-2-3-4-5-1-2-3-4-5... и продолжайте печатать значение. Почему моя программа сразу останавливается? Это просто заканчивается после того, как первые 5 цифр были замечены? Как я могу изменить это, чтобы непрерывно передавать значения и печатать их по мере прохождения этих значений? Кроме того, как мне на самом деле распечатать значения вместо ссылки на наблюдаемый объект?


person Martin Erlic    schedule 18.04.2017    source источник
comment
Поскольку диапазон завершается, когда он достигает конца диапазона   -  person EpicPandaForce    schedule 03.06.2017


Ответы (1)


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

Так что ваше предположение неверно. range ничего не повторяет. Для этого вам нужно использовать repeat

Observable.range(1, 5).repeat().subscribe(
  System.out::println,
  error -> System.out.println("error"),
  () -> System.out.println("completed")
);
person Heikki Vesalainen    schedule 03.06.2017