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位后才结束?如何更改此值以连续传输值并在这些值循环时打印它们?另外,我如何实际打印值而不是可观察对象引用?
答案 0 :(得分: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")
);