创建一个 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);