Использование RxJava 2.2.8
:
Observable.fromCallable(() -> "Some data")
.subscribe(
s -> System.out.println(s),
e -> System.err.println(e),
() -> System.out.println("Completed")
);
выход
Some data
Completed
У меня вопрос, почему onComplete
никогда не вызывают из-за следующего?
Observable.interval(1, TimeUnit.SECONDS)
.switchMap(t -> Observable.fromCallable(() -> "Some data"))
.subscribe(
s -> System.out.println(s),
e -> System.err.println(e),
() -> System.out.println("Completed")
);
выход
Some data
Some data
Some data
...
Я понимаю, Observable.interval
создаст бесконечный поток, так что onComplete
. Мое понимание switchMap
состоит в том, что он возвращает наблюдаемую информацию, которая запускает события, произведенные внутренней наблюдаемой (отмена любых ожидающих и выравнивающих), в данном случае Observable.fromCallable
.
Теперь эта «внутренняя» наблюдаемая имеет определенный конец (в отличие от внешней наблюдаемой), так почему же onComplete
не вызывается для этой внутренней наблюдаемой?
Почему результат не такой?
Some data
Completed
Some data
Completed
Some data
Completed
...