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