鍍金池/ 教程/ Android/ Subscribe
調(diào)度器 Scheduler
Empty/Never/Throw
Replay
這個頁面展示了創(chuàng)建Observable的各種方法。
ObserveOn
ReactiveX
TimeInterval
Window
本頁展示的操作符用于對整個序列執(zhí)行算法操作或其它操作,由于這些操作必須等待數(shù)據(jù)發(fā)射完成(通常也必須緩存這些數(shù)據(jù)),它們對于非常長
IgnoreElements
Distinct
Last
Start
And/Then/When
Switch
創(chuàng)建操作
Materialize/Dematerialize
CombineLatest
Catch
實現(xiàn)自己的操作符
StringObservable
Map
ConnectableObservable
Using
Take
BlockingObservable
TakeLast
Defer
RxJavaSchedulersHook
First
FlatMap
這個頁面的操作符可用于根據(jù)條件發(fā)射或變換Observables,或者對它們做布爾運算:
Do
Repeat
Serialize
這個頁面展示的操作符可用于過濾和選擇Observable發(fā)射的數(shù)據(jù)序列。
這個頁面列出了很多用于Observable的輔助操作符
Single
Retry
從錯誤中恢復(fù)的技術(shù)
Sample
Merge
算術(shù)和聚合操作
Range
Timestamp
RxJava Issues
From
Subscribe
Subject
Delay
Skip
SubscribeOn
Filter
按字母順序排列的全部操作符列表
Timeout
Scan
onError
Zip
RxJava文檔和教程
Publish
ElementAt
第一個例子
SkipLast
Just
Timer
Debounce
GroupBy
條件和布爾操作
這個頁面展示了可用于對Observable發(fā)射的數(shù)據(jù)執(zhí)行變換操作的各種操作符。
Introduction
rxjava-async
介紹響應(yīng)式編程
這個頁面展示的操作符可用于組合多個Observables。
ReactiveX
Connect
操作符分類
StartWith
Interval
Join
To
Buffer
RefCount
介紹
Observable

Subscribe

Subscribe

操作來自O(shè)bservable的發(fā)射物和通知

Subscribe操作符是連接觀察者和Observable的膠水。一個觀察者要想看到Observable發(fā)射的數(shù)據(jù)項,或者想要從Observable獲取錯誤和完成通知,它首先必須使用這個操作符訂閱那個Observable。

Subscribe操作符的一般實現(xiàn)可能會接受一到三個方法(然后由觀察者組合它們),或者接受一個實現(xiàn)了包含這三個方法的接口的對象(有時叫做ObserverSubscriber):

onNext

每當Observable發(fā)射了一項數(shù)據(jù)它就會調(diào)用這個方法。這個方法的參數(shù)是這個Observable發(fā)射的數(shù)據(jù)項。

onError

Observable調(diào)用這個方法表示它無法生成期待的數(shù)據(jù)或者遇到了其它錯誤。這將停止Observable,它在這之后不會再調(diào)用onNextonCompleted。onError方法的參數(shù)是導(dǎo)致這個錯誤的原因的一個表示(有時可能是一個Exception或Throwable對象,其它時候也可能是一個簡單的字符串,取決于具體的實現(xiàn))。

onCompleted

如果沒有遇到任何錯誤,Observable在最后一次調(diào)用onCompleted之后會調(diào)用這個方法。

如果一個Observable直到有一個觀察者訂閱它才開始發(fā)射數(shù)據(jù)項,就稱之為"冷"的Observable;如果一個Observable可能在任何時刻開始發(fā)射數(shù)據(jù),就稱之為"熱"的Observable,一個訂閱者可能從開始之后的某個時刻開始觀察它發(fā)射的數(shù)據(jù)序列,它可能會錯過在訂閱之前發(fā)射的數(shù)據(jù)。

RxJava中的實現(xiàn)是subscribe方法。

如果你使用無參數(shù)的版本,它將觸發(fā)對Observable的一個訂閱,但是將忽略它的發(fā)射物和通知。這個操作會激活一個"冷"的Observable。

你也可以傳遞一到三個函數(shù)給它,它們會按下面的方法解釋:

  1. onNext
  2. onNextonError
  3. onNext, onErroronCompleted

最后,你還可以傳遞一個ObserverSubscriber接口給它,Observer接口包含這三個以on開頭的方法。Subscriber接口也實現(xiàn)了這三個方法,而且還添加了幾個額外的方法,用于支持使用反壓操作(reactive pull backpressure),這讓Subscriber可以在Observable完成前取消訂閱。

subscribe方法返回一個實現(xiàn)了Subscription接口的對象。這個接口包含unsubscribe方法,任何時刻你都可以調(diào)用它來斷開subscribe方法建立的Observable和觀察者之間的訂閱關(guān)系。

foreach

forEach方法是簡化版的subscribe,你同樣可以傳遞一到三個函數(shù)給它,解釋和傳遞給subscribe時一樣。

不同的是,你無法使用forEach返回的對象取消訂閱。也沒辦法傳遞一個可以用于取消訂閱的參數(shù)。因此,只有當你明確地需要操作Observable的所有發(fā)射物和通知時,你才應(yīng)該使用這個操作符。

BlockingObservable

BlockingObservable類中也有一個類似的叫作forEach的方法。詳細的說明見 BlockingObservable

上一篇:Debounce下一篇:Zip