amb舶担、ambWith:
public static <T> Observable<T> amb(java.lang.Iterable<? extends Observable<? extends T>> sources)
public static <T> Observable<T> amb(Observable<? extends T> o1,
Observable<? extends T> o2)
......
public static <T> Observable<T> amb(Observable<? extends T> o1,
Observable<? extends T> o2,
Observable<? extends T> o3,
Observable<? extends T> o4,
Observable<? extends T> o5,
Observable<? extends T> o6,
Observable<? extends T> o7,
Observable<? extends T> o8,
Observable<? extends T> o9)
//Observable實(shí)例的方法
public final Observable<T> ambWith(Observable<? extends T> t1)
接受一個(gè)泛型為Observable的Iterable實(shí)例、或者兩到九個(gè)Observable實(shí)例作為源Observable闸氮。這些源Observable中第一個(gè)釋放item蒲跨、或者發(fā)出調(diào)用onError或onCompleted通知,那么amb返回的Observable就鏡像釋放這個(gè)源Observable釋放的item或發(fā)出的通知孙咪,而丟棄其它源Observable。Observable實(shí)例還有一個(gè)ambWith方法羔杨,接受一個(gè)Observable實(shí)例作為參數(shù)杨蛋,原理一樣。
defaultIfEmpty曙寡、switchIfEmpty:
public final Observable<T> defaultIfEmpty(T defaultValue)
public final Observable<T> switchIfEmpty(Observable<? extends T> alternate)
如果源Observable不是空举庶,釋放了item户侥,那么defaultIfEmpty峦嗤、switchIfEmpty就鏡像釋放源Observable釋放的item。如果源Observable沒有釋放任何item就發(fā)出調(diào)用onCompleted通知正常停止替梨,那么對(duì)于defaultIfEmpty返回的Observable就釋放傳入的參數(shù)作為唯一的item装黑;對(duì)于switchIfEmpty返回的Observable就釋放傳入的Observable參數(shù)釋放的item恋谭。
skipUntil:
public final <U> Observable<T> skipUntil(Observable<U> other)
注意糠睡,這是個(gè)Observable實(shí)例的方法哦。接受另一個(gè)Observable作為參數(shù)箕别。當(dāng)這另一個(gè)Observable釋放了item铜幽,skipUntil就開始鏡像釋放源Observable釋放的item滞谢,丟棄源Observable在另一個(gè)Observable釋放item之前釋放的所有item串稀。
skipWhile:
public final Observable<T> skipWhile(Func1<? super T,java.lang.Boolean> predicate)
Observable實(shí)例的方法。接受一個(gè)Func1實(shí)現(xiàn)作為參數(shù)狮杨,這個(gè)Func1接受源Observable釋放的item作為參數(shù)母截,F(xiàn)unc1實(shí)現(xiàn)內(nèi)部定義了一個(gè)比較規(guī)則,如果傳入的item符合這個(gè)規(guī)則返回true橄教,不滿足返回false喘漏。當(dāng)Func1實(shí)現(xiàn)返回false的時(shí)候,skipWhile返回的Observable就鏡像釋放源Observable釋放的item华烟,之后源Observable釋放的item不再比較直接由skipWhile返回的Observable鏡像釋放翩迈,注意不滿足比較規(guī)則的item也被釋放出去了哦,和下面的takeWhile進(jìn)行比較盔夜,之前源Observable釋放的item將會(huì)被丟棄负饲。
takeUntil:
public final <E> Observable<T> takeUntil(Observable<? extends E> other)
public final Observable<T> takeUntil(Func1<? super T,java.lang.Boolean> stopPredicate)
還是Observable實(shí)例的方法。接受另一個(gè)Observable或者一個(gè)接受源Observable釋放的item作為參數(shù)的Func1實(shí)現(xiàn)作為參數(shù)喂链,F(xiàn)unc1內(nèi)部定義了比較規(guī)則返十,如果源Obeservable釋放的item符合這個(gè)規(guī)則返回true,否則返回false椭微。takeUntil返回的Observable鏡像釋放源Observable釋放的item洞坑,直到傳入的Obserbable釋放item或者發(fā)出調(diào)用onError或onCompleted通知,或者傳入的Func1實(shí)現(xiàn)返回true蝇率,然后takeUntil返回的Observable停止迟杂。
takeWhile:
public final Observable<T> takeWhile(Func1<? super T,java.lang.Boolean> predicate)
又是一個(gè)Obsevable實(shí)例的方法。接受一個(gè)Func1實(shí)現(xiàn)作為參數(shù)本慕,F(xiàn)unc1實(shí)現(xiàn)接受源Observable釋放的item作為參數(shù)逢慌,F(xiàn)unc1實(shí)現(xiàn)內(nèi)部定義了一個(gè)比較規(guī)則,如果接受的item滿足這個(gè)規(guī)則返回true间狂,反之返回false攻泼。takeWhile返回的Observable鏡像釋放源Observable釋放的item,直到Func1實(shí)現(xiàn)返回false的時(shí)候發(fā)出調(diào)用onCompleted通知停止鉴象。注意看圖忙菠,不滿足比較規(guī)則的item沒有釋放哦。不像skipWhile不滿足的item也被釋放出去了纺弊。