在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ BlockingObservable
調(diào)度器 Scheduler
Empty/Never/Throw
Replay
這個(gè)頁面展示了創(chuàng)建Observable的各種方法。
ObserveOn
ReactiveX
TimeInterval
Window
本頁展示的操作符用于對(duì)整個(gè)序列執(zhí)行算法操作或其它操作,由于這些操作必須等待數(shù)據(jù)發(fā)射完成(通常也必須緩存這些數(shù)據(jù)),它們對(duì)于非常長
IgnoreElements
Distinct
Last
Start
And/Then/When
Switch
創(chuàng)建操作
Materialize/Dematerialize
CombineLatest
Catch
實(shí)現(xiàn)自己的操作符
StringObservable
Map
ConnectableObservable
Using
Take
BlockingObservable
TakeLast
Defer
RxJavaSchedulersHook
First
FlatMap
這個(gè)頁面的操作符可用于根據(jù)條件發(fā)射或變換Observables,或者對(duì)它們做布爾運(yùn)算:
Do
Repeat
Serialize
這個(gè)頁面展示的操作符可用于過濾和選擇Observable發(fā)射的數(shù)據(jù)序列。
這個(gè)頁面列出了很多用于Observable的輔助操作符
Single
Retry
從錯(cuò)誤中恢復(fù)的技術(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è)頁面展示了可用于對(duì)Observable發(fā)射的數(shù)據(jù)執(zhí)行變換操作的各種操作符。
Introduction
rxjava-async
介紹響應(yīng)式編程
這個(gè)頁面展示的操作符可用于組合多個(gè)Observables。
ReactiveX
Connect
操作符分類
StartWith
Interval
Join
To
Buffer
RefCount
介紹
Observable

BlockingObservable

這一節(jié)解釋 BlockingObservable 的子類. 一個(gè)阻塞的Observable 繼承普通的Observable類,增加了一些可用于阻塞Observable發(fā)射的數(shù)據(jù)的操作符。

要將普通的Observable 轉(zhuǎn)換為 BlockingObservable,可以使用 [Observable.toBlocking(?)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#toBlocking()) 方法或者BlockingObservable.from(?) 方法。

  • forEach(?) — 對(duì)Observable發(fā)射的每一項(xiàng)數(shù)據(jù)調(diào)用一個(gè)方法,會(huì)阻塞直到Observable完成
  • first(?) — 阻塞直到Observable發(fā)射了一個(gè)數(shù)據(jù),然后返回第一項(xiàng)數(shù)據(jù)
  • firstOrDefault(?) — 阻塞直到Observable發(fā)射了一個(gè)數(shù)據(jù)或者終止,返回第一項(xiàng)數(shù)據(jù),或者返回默認(rèn)值
  • last(?) — 阻塞直到Observable終止,然后返回最后一項(xiàng)數(shù)據(jù)
  • lastOrDefault(?) — 阻塞直到Observable終止,然后返回最后一項(xiàng)的數(shù)據(jù),或者返回默認(rèn)值
  • mostRecent(?) — 返回一個(gè)總是返回Observable最近發(fā)射的數(shù)據(jù)的iterable
  • next(?) — 返回一個(gè)Iterable,會(huì)阻塞直到Observable發(fā)射了另一個(gè)值,然后返回那個(gè)值
  • latest(?) — 返回一個(gè)iterable,會(huì)阻塞直到或者除非Observable發(fā)射了一個(gè)iterable沒有返回的值,然后返回這個(gè)值
  • single(?) — 如果Observable終止時(shí)只發(fā)射了一個(gè)值,返回那個(gè)值,否則拋出異常
  • singleOrDefault(?) — 如果Observable終止時(shí)只發(fā)射了一個(gè)值,返回那個(gè)值,否則否好默認(rèn)值
  • toFuture(?) — 將Observable轉(zhuǎn)換為一個(gè)Future
  • toIterable(?) — 將一個(gè)發(fā)射數(shù)據(jù)序列的Observable轉(zhuǎn)換為一個(gè)Iterable
  • getIterator(?) — 將一個(gè)發(fā)射數(shù)據(jù)序列的Observable轉(zhuǎn)換為一個(gè)Iterator

伴隨這個(gè)解釋還有一個(gè)修改版的彈珠圖,表示阻塞Observable的彈珠圖:

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

BlockingObservable的方法

BlockingObservable的方法不是將一個(gè)Observable變換為另一個(gè),也不是過濾Observables,它們會(huì)打斷Observable的調(diào)用鏈,會(huì)阻塞等待直到Observable發(fā)射了想要的數(shù)據(jù),然后返回這個(gè)數(shù)據(jù)(而不是一個(gè)Observable)。

要將一個(gè)Observable轉(zhuǎn)換為一個(gè)BlockingObservable,你可以使用Observable.toBlockingBlockingObservable.from方法。

first

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

要獲取BlockingObservable的發(fā)射物,使用無參數(shù)的first方法。

first.p

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

你也可以給first方法傳遞一個(gè)謂詞函數(shù)用于獲取滿足條件的BlockingObservable

firstOrDefault

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

和過濾操作符一樣,如果原始Observable沒有數(shù)據(jù),first會(huì)拋出異常NoSuchElementException,firstOrDefault會(huì)返回一個(gè)默認(rèn)值。

firstOrDefault.p

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

firstOrDefault同樣也接受一個(gè)謂詞函數(shù)作為參數(shù),用于獲取滿足條件的第一項(xiàng),如果沒有滿足條件的就返回默認(rèn)值。

single

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

singlefirst類似,但是如果不是正好發(fā)射一個(gè)數(shù)據(jù),會(huì)拋出異常NoSuchElementException。其它幾個(gè)變體的功能也是類似的。

single.p

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

同上,接受一個(gè)謂詞函數(shù),如果滿足條件的不是正好一個(gè),會(huì)拋出異常。

singleOrDefault

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

類似firstOrDefault,在為空時(shí)返回默認(rèn)值,超過一個(gè)就拋出異常。

singleOrDefault.p

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/B.singleOrDefault.p.png" alt="single" />

類似firstOrDefault,接受一個(gè)謂詞函數(shù),如果沒有復(fù)合條件的,返回默認(rèn)值;如果有多個(gè)復(fù)合條件的,以錯(cuò)誤通知終止。

next

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

next操作符會(huì)阻塞直到BlockingObservable返回另外一個(gè)值,然后它返回那個(gè)值。你可以重復(fù)調(diào)用這個(gè)方法從BlockingObservable獲取后續(xù)的數(shù)據(jù)項(xiàng)。以阻塞的方式高效的迭代獲取它的發(fā)射物。

latest操作符也是類似的,但是它不會(huì)阻塞等待下一個(gè)值,它立即返回最近發(fā)射的數(shù)據(jù)項(xiàng),只在Observable還沒有發(fā)射任何數(shù)據(jù)時(shí)會(huì)阻塞。

mostRecent

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

mostRecent操作符讓你可以用類似的方式迭代一個(gè)BlockingObservable,但是它總是立即返回一個(gè)值,或者是默認(rèn)值(如果BlockingObservable還沒有發(fā)射任何數(shù)據(jù)),或者是BlockingObservable最近發(fā)射的數(shù)據(jù)項(xiàng)。

forEach

BlockingObservable類中也有一個(gè)類似的叫作forEach的方法。要使用這個(gè)方法,你首先需要使用BlockingObservable.from方法或Observable.toBlocking操作符將原始Observable轉(zhuǎn)換為一個(gè)BlockingObservable。

BlockingObservable.forEach接受單個(gè)函數(shù)作為參數(shù),這個(gè)函數(shù)的作用類似于普通Observable訂閱中的onNext函數(shù)。forEach自身會(huì)阻塞知道BlockingObservable完成,當(dāng)它不阻塞時(shí)就是完成了,不是通過調(diào)用一個(gè)回調(diào)方法表示它完成了。如果遇到了錯(cuò)誤它將拋出一個(gè)RuntimeException(而不是調(diào)用一個(gè)類似于onError的回調(diào)方法)。

參見:

附錄:相似的阻塞和非阻塞操作符列表

操作符 執(zhí)行結(jié)果 Rx.NET等價(jià)操作
發(fā)射多個(gè)數(shù)據(jù)的Observable 發(fā)射單個(gè)數(shù)據(jù)的Observable 不發(fā)射數(shù)據(jù)的Observable
Observable.first 第一項(xiàng) 單個(gè)數(shù)據(jù) 該元素不存在 firstAsync
BlockingObservable.first 第一項(xiàng) 單個(gè)數(shù)據(jù) 該元素不存在 first
Observable.firstOrDefault 第一項(xiàng) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) firstOrDefaultAsync
BlockingObservable.firstOrDefault 第一項(xiàng) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) firstOrDefault
Observable.last 最后一項(xiàng) 單個(gè)數(shù)據(jù) 該元素不存在 lastAsync
BlockingObservable.last 最后一項(xiàng) 單個(gè)數(shù)據(jù) 該元素不存在 last
Observable.lastOrDefault 最后一項(xiàng) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) lastOrDefaultAsync
BlockingObservable.lastOrDefault 最后一項(xiàng) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) lastOrDefault
Observable.single 非法參數(shù) 單個(gè)數(shù)據(jù) 該元素不存在 singleAsync
BlockingObservable.single 非法參數(shù) 單個(gè)數(shù)據(jù) 該元素不存在 single
Observable.singleOrDefault 非法參數(shù) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) singleOrDefaultAsync
BlockingObservable.singleOrDefault 非法參數(shù) 單個(gè)數(shù)據(jù) 默認(rèn)數(shù)據(jù) singleOrDefault
上一篇:Materialize/Dematerialize下一篇:Delay