buffer:buffer操作符,將原有observable發射的資料快取起來,比如buffer(2),就每2個資料放進乙個集合,然後發射這個集合出去。buffer方法有很多過載的方法。
flatmap: 該操作符,使用乙個指定的函式對原始observable發射的每一項資料執行變換操作(lift),這個函式返回乙個本身也發射資料的observable,然後flatmap合併這些observbales發射的資料,最後將合併後的結果當做它自己的資料㤡發射。簡單的理解為,為原有observabel的每一項資料進行操作,然後發射這些經過過濾操作的資料。**alert:**flatmap對這些observables發射的資料做的是合併(merge)的操作,因此它們可能是交錯的。如果要保證返回的資料集合不交錯,可以使用concatmap
groupby操作符將原始observable分拆為一些observables集合,它們中的每乙個發射原始observable序列的乙個子串行。那個資料項由哪乙個observbale發射是由 乙個函式判定的,通過在函式中返回乙個key ,key 相同的資料會被同乙個observbale發射。如果你取消訂閱乙個 groupobservable,那麼那個observable 將會被終止。如果之後的observbale又發**乙個與這個 observable的 key 匹配的資料,grouby將會為這個key建立乙個新的groupobservable
map對observable發射的每一項資料應用乙個函式,執行變換操作,實際上flatmap內部是通過map對資料進行變化的,在map的基礎上加了merge的操作符,合併多個observables的發射物。
scan連續地對資料序列的每一項應用乙個函式,然後連續發射結.scan操作符對原始observable發射的第一項資料應用乙個函式,然後將那個函式的結果作為自己的第一項資料發射。它將函式的結果同第二項資料一起填充給這個函式來產生它自己的第二項資料。它持續進行這個過程來產生剩餘的資料序列。這個操作符在某些情況下被叫做accumulator(有點像函式遞迴呼叫)。
window這個操作符和buffer()很像。但是它發射的是observable而不是列表。,它發射乙個個observbale出去,這些observables中的每乙個都發射原始observable資料的乙個子集,數量由count指定,最後發射乙個oncompleted()結束。正如buffer()一樣,window()也有乙個skip變體。
cast總結:比較難的是,buffer 它有多個變體。它是map()操作符的特殊版本。它將源observable中的每一項資料都轉換為新的型別,把它變成了不同的class.它的引數就是乙個 class,在訂閱的時候,會將原observable發射的資料都強轉成這個型別
RXJava 變換操作
這個頁面展示了可用於對observable發射的資料執行變換操作的各種操作符。變換操作 map 對序列的每一項都應用乙個函式來變換observable發射的資料序列 flatmap concatmap and flatmapiterable 將observable發射的資料集合變換為observab...
手寫rxjava事件變換
首先還是看怎麼使用 observable.just map new function map new function subscribeon schedulers.io observeon androidschedulers.mainthread subscribe new consumer 看原...
Rxjava的學習之變換操作符 scan
連續地對資料序列的每一項應用乙個函式,然後連續發射結果 scan操作符對原始observable發射的第一項資料應用乙個函式,然後將那個函式的結果作為自己的第一項資料發射。它將函式的結果同第二項資料一起填充給這個函式來產生它自己的第二項資料。它持續進行這個過程來產生剩餘的資料序列。這個操作符在某些情...