RxJava 中的map與flatMap


1、map和flatMap都是接受一個函數作為參數(Func1)
2、map函數只有一個參數,參數一般是Func1,Func1的<I,O>I,O模版分別為輸入和輸出值的類型,實現Func1的call方法對I類型進行處理后返回O類型數據

3、flatMap函數也只有一個參數,也是Func1,Func1的<I,O>I,O模版分別為輸入和輸出值的類型,實現Func1的call方法對I類型進行處理后返回O類型數據,不過這里O為Observable類型

 

map實例       

         

這里map里面直接對參數處理

 

flatMap實例:

 

這里用 Observable.just(s)在里面對參數進行處理並返回一個Observable,

 

上面兩個例子效果是一樣的,注意的就是參數,返回值不一樣,我們再來看幾個:

這里在map里面返回了一個Observable,注意subscribe的參數也要變成了Observable<String>,否則會有異常<這么寫主要是當時不太明白map和flatMap的區別,想看一下到底有什么區別>

 

Map一般用於對原始的參數進行加工處理,返回值還是基本的類型,可以在subscribe中使用(適用)的類型。

flatMap一般用於輸出一個Observable,而其隨后的subscribe中的參數也跟Observable中的參數一樣,注意不是Observable,一般用於對原始數據返回一個Observable,這個Observable中數據類型可以是原來的,也可以是其他的

Observable<List<String>> query(String text);   
query("Hello, world!")    
    .flatMap(new Func1<List<String>, Observable<String>>() {    
        @Override    
        public Observable<String> call(List<String> urls) {    
            return Observable.from(urls);    
        }    
    })    
    .subscribe(url -> System.out.println(url));    

  

這里對原始的List在flatMap里面返回相應的一個個的

 

這里結合了retrofit  在flatMap中通過一個城市的str,返回一個Observable的參數是一些獲取到的天氣信息結構WeatherData,這樣在后面subscrib中就可以對其進行處理了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM