1. 程式人生 > >深入淺出RxJava—操作符

深入淺出RxJava—操作符

原文連結 參考文章 本篇文章將重點介紹RxJava中的操作符,RxJava的強大性就來於它所定義的操作符。 假如我們現在有這樣一個介面,返回一個網站地址list集合,並將集合資料進行列印,基於上一篇文章,我們可能寫出這樣的程式碼: 先貼出query方法程式碼: 1234567891011查詢將輸入地址: 1
        query().subscribe(new Action1<List<String>>() {
2
            @Override
3
            public
void call(List<String> list) {
4 5
                for (String s : list) {
6
                    Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
7
                }
8
            }
9
        });
這段程式碼使我們丟失了變換資料流的能力,一但要更改資料只能在subscribe 總進行,那你會說可以使用map操作符 1234567891011121314這樣的程式碼依舊要使用集合遍歷的方式才能獲取到每一個元素。幸運的是RxJava提供了另外一個方法from,它接受一個集合作為輸入,然後每次輸出一個元素給subscriber。 1
        query().subscribe(new Action1<List<String>>() {
2
            @Override
3
            public void call(List<String> list) {
4
                Observable.from(list).subscribe(new Action1<String>() {
5
                    @Override
6
                    public void call(String s) {
7
                        Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
8
                    }
9
                });
10
            }
11
        });
這樣雖然去掉了遍歷迴圈,但是程式碼看起來依然很凌亂,多個巢狀的subscription看起來很臃腫且不好維護。 救星來了,它就是flatMap,Observable.flatMap()接受一個Observable 為輸入引數,同時輸出另外一個Observable,直接上程式碼: 12345678910