创建一个 Observable
有几种方法可以在 RxJava 中创建 Observable。最强大的方法是使用 Observable.create
方法。但它也是最复杂的方式。因此,你必须尽可能避免使用它。
散发出价值
如果你已有值,则可以使用 Observable.just
来释放你的值。
Observable.just("Hello World").subscribe(System.out::println);
发出应该计算的值
如果要发出尚未计算的值,或者计算时间可能很长,则可以使用 Observable.fromCallable
发出下一个值。
Observable.fromCallable(() -> longComputation()).subscribe(System.out::println);
只有当你订阅 Observable
时才会调用 longComputation()
。这样,计算将是懒惰的。
发送应计算的值的替代方法
Observable.defer
就像 Observable.fromCallable
一样构建了一个 Observable
,但是当你需要返回一个 Observable
而不是一个值时它会被使用。当你想要管理呼叫中的错误时,它非常有用。
Observable.defer(() -> {
try {
return Observable.just(longComputation());
} catch(SpecificException e) {
return Observable.error(e);
}).subscribe(System.out::println);