RxJAVA 經常使用操做符

 1 zip() 是合併多個Observable 發射出來的數據,而且根據FUNC2 函數變換產生一個新的值ide

這裏會把 1A 2B ,若是一個序列介紹了,就不會產生新的值了;函數

 

 List<String> list = new ArrayList();
        for (int i =0;i<=20;i++){
            list.add("arg="+i+"====>>");
        }
        Observable<Long> observable = Observable.interval(1, TimeUnit.SECONDS);
        Observable<String> observable1 = Observable.from(list);
         Observable.zip(observable, observable1, new Func2<Long, String, Object>() {
             @Override
             public Object call(Long aLong, String s) {
                 return s+aLong;
             }
         }).subscribe(new Action1<Object>() {
             @Override
             public void call(Object o) {
                 Log.i("===>>",(String) o);
             }
         });

結果爲spa

01-18 15:25:33.042 1498-1694/sean.com.test I/===>>: arg=16====>>16
01-18 15:25:34.042 1498-1694/sean.com.test I/===>>: arg=17====>>17
01-18 15:25:35.042 1498-1694/sean.com.test I/===>>: arg=18====>>18
01-18 15:25:36.041 1498-1694/sean.com.test I/===>>: arg=19====>>19
01-18 15:25:37.042 1498-1694/sean.com.test I/===>>: arg=20====>>20

 

2  Marge() 是把多個Abservable裏面的值合併成一個code

最後的序列如上圖所示server

 List<Long> list = new ArrayList();
        for (int i =0;i<20;i++){
            list.add(Long.valueOf(i));
        }
        List<Long> list1 = new ArrayList();
        for (int i =20;i<40;i++){
            list1.add(Long.valueOf(i));
        }
        Observable<Long> observable = Observable.from(list);
        Observable<Long> observable1 = Observable.from(list1);
         Observable.merge(observable, observable1).subscribe(new Action1<Object>() {
             @Override
             public void call(Object o) {
                 Log.i("===>>", o+"");
             }
         });

結果爲 blog

01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 0
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 1
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 2
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 3
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 4
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 5
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 6
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 7
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 8
01-18 15:54:55.132 16954-16954/sean.com.test I/===>>: 9
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 10
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 11
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 12
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 13
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 14
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 15
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 16
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 17
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 18
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 19
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 20
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 21
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 22
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 23
01-18 15:54:55.133 16954-16954/sean.com.test I/===>>: 24
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 25
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 26
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 27
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 28
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 29
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 30
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 31
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 32
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 33
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 34
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 35
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 36
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 37
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 38
01-18 15:54:55.134 16954-16954/sean.com.test I/===>>: 39

 

3 Flatmap 和 map, Flatmap 返回一個新的Observable, 而map返回原來的Observerableip

     List<Long> list = new ArrayList();
        for (int i =0;i<20;i++){
            list.add(Long.valueOf(i));
        }
        Observable<Long> observable = Observable.from(list);
        observable.flatMap(new Func1<Long, Observable<String>>() {
            @Override
            public Observable<String> call(Long aLong) {
                return Observable.just("hello"+aLong);
            }
        }).subscribe(new Action1<String>() {
            @Override
            public void call(String s) {
                Log.i("===>>",s);
            }
        });
    }

 

4 Concat 連接多個Observable(不能用不定參數??)it

相關文章
相關標籤/搜索