RxJava學習(10):複用與join
前言
根據Froussios英文版的學習筆記。
開發的時候,發現流的轉換等部分操作一模一樣,此時該如何複用呢?如果發現流的訂閱部分操作一模一樣,此時又該如何呢?
一、compose與lift
compose轉換一個observable為另一個observable,但是lift則是對Subscriber進行更改。
public <R> Observable<R> compose(Observable.Transformer<? super T,? extends R> transformer)
public final <R> Observable<R> lift(ObservableOperator<? extends R, ? super T> lifter)
@Test
public void a() {
Observable.just(1).compose(transform()).subscribe(System.out::println);
Observable.just(2).lift(operator()).subscribe(System.out::println);
}
@NonNull
private ObservableTransformer<Integer, String> transform() {
return upstream -> upstream.map(integer -> "我是第" + integer + "名");
}
@NonNull
private ObservableOperator<String, Integer> operator() {
return observer -> new Observer<Integer>(){
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
observer.onNext("我是第" + integer + "名");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
}
schedulers
- immediate :當前執行緒立刻開始
- trampoline:當前執行緒按照佇列順序執行
- newThread :每一個work新建一個執行緒
- computation:CPU工作
- io:IO操作
join
join和zip的區別
zip按順序結合兩個或多個Observables發射的資料項,然後它發射這個函式返回的結果。它按照嚴格的順序應用這個函式。它只發射與發射資料項最少的那個Observable一樣多的資料。
join則是在任何時候,只要在另一個Observable發射的資料定義的時間視窗內,這個Observable發射了一條資料,就結合兩個Observable發射的資料。
相關文章
- RxJava 學習筆記RxJava筆記
- RxJava2 學習(一)RxJava
- RxJava2 學習(二)RxJava
- RxJava學習一:初識RxJava
- 大話RxJava:一、初識RxJava與基本運用RxJava
- mysql left join 優化學習MySql優化
- 學習Join View-Key-Preserved Tables以及DML Statements on a join viewView
- update,delete與INNER JOIN 以及刪除重複資料delete
- Android RxJava:這是一份RxJava使用入門學習指南AndroidRxJava
- RxJava 學習筆記 -- 基礎知識RxJava筆記
- Oracle學習系列—資料庫優化—Access Path和join學習Oracle資料庫優化
- RxJava 學習筆記 -- 變換操作符RxJava筆記
- RxJava 學習筆記 -- 過濾操作符RxJava筆記
- RxJava2操作符學習筆記RxJava筆記
- 玩轉RxJava2.x 學習教程(一)RxJava
- 神經網路與深度學習 課程複習總結神經網路深度學習
- Java IO學習筆記六:NIO到多路複用Java筆記
- RxJava2.0 及Retrofit2.0學習資源RxJava
- 《ASP.NET開發與應用實踐》例題複習用ASP.NET
- CSS學習-Flex佈局複習CSSFlex
- Scala程式碼練習(複習用)
- 密碼學期末複習密碼學
- [密碼學複習]Cryptography密碼學
- RxJava練武場之——Observable網路框架的解耦和複用RxJava框架解耦
- 深度學習的應用與實踐深度學習
- 強化學習之原理與應用強化學習
- RxJava2.X 學習筆記 -- 建立操作符RxJava筆記
- Java多執行緒之join()的使用初學習Java執行緒
- 【SQL 學習】表連線--natural join 的一個bugSQL
- REACT元件抽象與複用React元件抽象
- RxJava 系列番外篇:一個 RxJava 解決複雜業務邏輯的案例RxJava
- 資料結構與演算法學習-複雜度分析資料結構演算法複雜度
- React、Redux與複雜業務元件的複用ReactRedux元件
- MongoDB學習之複製集MongoDB
- 【SQL 學習】去掉重複行SQL
- 材料力學複習總結
- 網路程式設計學習——Linux epoll多路複用模型程式設計Linux模型
- xBIM學習與應用01 xBIM簡介