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

Start

Start

返回一個(gè)Observable,它發(fā)射一個(gè)類(lèi)似于函數聲明的值

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

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

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

rxjava-async模塊包含start操作符,它接受一個(gè)函數作為參數,調用這個(gè)函數獲取一個(gè)值,然后返回一個(gè)會(huì )發(fā)射這個(gè)值給后續觀(guān)察者的Observable。

注意:這個(gè)函數只會(huì )被執行一次,即使多個(gè)觀(guān)察者訂閱這個(gè)返回的Observable。

toAsync

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

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

對于函數(functions),這個(gè)操作符調用這個(gè)函數獲取一個(gè)值,然后返回一個(gè)會(huì )發(fā)射這個(gè)值給后續觀(guān)察者的Observable(和start一樣)。對于動(dòng)作(Action),過(guò)程類(lèi)似,但是沒(méi)有返回值,在這種情況下,這個(gè)操作符在終止前會(huì )發(fā)射一個(gè)null值。

注意:這個(gè)函數或動(dòng)作只會(huì )被執行一次,即使多個(gè)觀(guān)察者訂閱這個(gè)返回的Observable。

startFuture

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

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

deferFuture

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

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

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

fromAction

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

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

fromCallable

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

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

fromRunnable

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

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

forEachFuture

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

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

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

runAsync

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

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

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

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

上一篇:Last下一篇:實(shí)現自己的操作符