鍍金池/ 教程/ Android/ Start
調(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

Start

Start

返回一個Observable,它發(fā)射一個類似于函數(shù)聲明的值

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/start.png" alt="Start" />

編程語言有很多種方法可以從運算結(jié)果中獲取值,它們的名字一般叫functions, futures, actions, callables, runnables等等。在Start目錄下的這組操作符可以讓它們表現(xiàn)得像Observable,因此它們可以在Observables調(diào)用鏈中與其它Observable搭配使用。

Start操作符的多種RxJava實現(xiàn)都屬于可選的rxjava-async模塊。

rxjava-async模塊包含start操作符,它接受一個函數(shù)作為參數(shù),調(diào)用這個函數(shù)獲取一個值,然后返回一個會發(fā)射這個值給后續(xù)觀察者的Observable。

注意:這個函數(shù)只會被執(zhí)行一次,即使多個觀察者訂閱這個返回的Observable。

toAsync

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/toAsync.png" alt="toAsync" />

rxjava-async模塊還包含這幾個操作符:toAsync, asyncAction, 和asyncFunc。它們接受一個函數(shù)或一個Action作為參數(shù)。

對于函數(shù)(functions),這個操作符調(diào)用這個函數(shù)獲取一個值,然后返回一個會發(fā)射這個值給后續(xù)觀察者的Observable(和start一樣)。對于動作(Action),過程類似,但是沒有返回值,在這種情況下,這個操作符在終止前會發(fā)射一個null值。

注意:這個函數(shù)或動作只會被執(zhí)行一次,即使多個觀察者訂閱這個返回的Observable。

startFuture

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/startFuture.png" alt="startFuture" />

rxjava-async模塊還包含一個startFuture操作符,傳遞給它一個返回Future的函數(shù),startFuture會立即調(diào)用這個函數(shù)獲取Future對象,然后調(diào)用Futureget()方法嘗試獲取它的值。它返回一個發(fā)射這個值給后續(xù)觀察者的Observable。

deferFuture

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/deferFuture.png" alt="deferFuture" />

rxjava-async模塊還包含一個deferFuture操作符,傳遞給它一個返回Future的函數(shù)(這個Future返回一個Observable),deferFuture返回一個Observable,但是不會調(diào)用你提供的函數(shù),直到有觀察者訂閱它返回的Observable。這時,它立即調(diào)用Futureget()方法,然后鏡像發(fā)射get()方法返回的Observable發(fā)射的數(shù)據(jù)。

用這種方法,你可以在Observables調(diào)用鏈中包含一個返回Observable的Future對象。

fromAction

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/fromCallable.png" alt="fromAction" />

rxjava-async模塊還包含一個fromAction操作符,它接受一個Action作為參數(shù),返回一個Observable,一旦Action終止,它發(fā)射這個你傳遞給fromAction的數(shù)據(jù)。

fromCallable

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/fromCallable.png" alt="fromCallable" />

rxjava-async模塊還包含一個fromCallable操作符,它接受一個Callable作為參數(shù),返回一個發(fā)射這個Callable的結(jié)果的Observable。

fromRunnable

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/fromRunnable.png" alt="fromRunnable" />

rxjava-async模塊還包含一個fromRunnable操作符,它接受一個Runnable作為參數(shù),返回一個Observable,一旦Runnable終止,它發(fā)射這個你傳遞給fromRunnable的數(shù)據(jù)。

forEachFuture

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/forEachFuture.png" alt="forEachFuture" />

rxjava-async模塊還包含一個forEachFuture操作符。它其實不算Start操作符的一個變體,而是有一些自己的特點。你傳遞一些典型的觀察者方法(如onNext, onError和onCompleted)給它,Observable會以通常的方式調(diào)用它。但是forEachFuture自己返回一個Future并且在get()方法處阻塞,直到原始Observable執(zhí)行完成,然后它返回,完成還是錯誤依賴于原始Observable是完成還是錯誤。

如果你想要一個函數(shù)阻塞直到Observable執(zhí)行完成,可以使用這個操作符。

runAsync

rxjava-async模塊還包含一個runAsync操作符。它很特殊,返回一個叫做StoppableObservable的特殊Observable。

傳遞一個Action和一個SchedulerrunAsync,它返回一個使用這個Action產(chǎn)生數(shù)據(jù)的StoppableObservable。這個Action接受一個Observable和一個Subscription作為參數(shù),它使用Subscription檢查unsubscribed條件,一旦發(fā)現(xiàn)條件為真就立即停止發(fā)射數(shù)據(jù)。在任何時候你都可以使用unsubscribe方法手動停止一個StoppableObservable(這會同時取消訂閱與這個StoppableObservable關(guān)聯(lián)的Subscription)。

由于runAsync會立即調(diào)用Action并開始發(fā)射數(shù)據(jù),在你創(chuàng)建StoppableObservable之后到你的觀察者準備好接受數(shù)據(jù)之前這段時間里,可能會有一部分數(shù)據(jù)會丟失。如果這不符合你的要求,可以使用runAsync的一個變體,它也接受一個Subject參數(shù),傳遞一個ReplaySubject給它,你可以獲取其它丟失的數(shù)據(jù)了。

在RxJava中還有一個版本的From操作符可以將Future轉(zhuǎn)換為Observable,與start相似。

上一篇:Last下一篇:實現(xiàn)自己的操作符