建立一個 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);