RxJava 中的map與flatMap

一、map和flatMap都是接受一個函數做爲參數(Func1)
二、map函數只有一個參數,參數通常是Func1,Func1的<I,O>I,O模版分別爲輸入和輸出值的類型,實現Func1的call方法對I類型進行處理後返回O類型數據html

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

 

map實例       函數

         

這裏map裏面直接對參數處理url

 

flatMap實例:spa

 

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

 

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

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

 

Map通常用於對原始的參數進行加工處理,返回值仍是基本的類型,能夠在subscribe中使用(適用)的類型。class

flatMap通常用於輸出一個Observable,而其隨後的subscribe中的參數也跟Observable中的參數同樣,注意不是Observable,通常用於對原始數據返回一個Observable,這個Observable中數據類型能夠是原來的,也能夠是其餘的List

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中就能夠對其進行處理了。

相關文章
相關標籤/搜索