系列故事的第4篇介紹RxJava的合并API
zip
zip方法將多個Observables的發射物結合到一起,它只發射與發射數據項最少的那個Observable一樣多的數據。
merge
使用Merge操作符你可以將多個Observables的輸出合并,就好像它們是一個單個的Observable一樣。Merge可能會讓合并的Observables發射的數據交錯。
concat
concat與merge類似,只不過它不會讓數據交錯,它會按順序一個接著一個發射多個Observables的發射物。
combineLatest
combineLatest操作符行為類似于zip,但是只有當原始的Observable中的每一個都發射了一條數據時zip才發射數據。combineLatest則在原始的Observable中任意一個發射了數據時發射一條數據。當原始Observables的任何一個發射了一條數據時,CombineLatest使用一個函數結合它們最近發射的數據,然后發射這個函數的返回值。
join
join操作符把類似于combineLatest操作符,也是兩個Observable產生的結果進行合并,合并的結果組成一個新的Observable,但是join操作符可以控制每個Observable產生結果的生命周期,在每個結果的生命周期內,可以與另一個Observable產生的結果按照一定的規則進行合并。
startWith
如果你想要一個Observable在發射數據之前先發射一個指定的數據序列,可以使用StartWith操作符,接受一個Iterable或者多個Observable作為函數的參數。
switch
switch方法將一個發射多個Observables的Observable轉換成另一個單獨的Observable,注意:當原始Observable發射了一個新的Observable時,它將取消訂閱之前的那個Observable。這意味著,在后來那個Observable產生之后到它開始發射數據之前的這段時間里,前一個Observable發射的數據將被丟棄。
總結:
以上的方法已經基本例舉了RxJava中有關Observable對象過濾的API,具體用法還需要大家多加練習呀!
注:本人會在此系列文章的末尾加上GitHub源碼地址,敬請期待。。。