RXJava 創建操作符

RXJava操作符的創建

just( ) — 將一個或多個對象轉換成發射這個或這些對象的一個Observable
from( ) — 將一個Iterable, 一個Future, 或者一個數組轉換成一個Observable
repeat( ) — 創建一個重複發射指定數據或數據序列的Observable
repeatWhen( ) — 創建一個重複發射指定數據或數據序列的Observable,它依賴於另一個Observable發射的數據
create( ) — 使用一個函數從頭創建一個Observable
defer( ) — 只有當訂閱者訂閱才創建Observable;爲每個訂閱創建一個新的Observable
range( ) — 創建一個發射指定範圍的整數序列的Observable
interval( ) — 創建一個按照給定的時間間隔發射整數序列的Observable
timer( ) — 創建一個在給定的延時之後發射單個數據的Observable
empty( ) — 創建一個什麼都不做直接通知完成的Observable
error( ) — 創建一個什麼都不做直接通知錯誤的Observable
never( ) — 創建一個不發射任何數據的Observable

create

Observable.create(new Observable.OnSubscribe<Integer>() {
    @Override
    public void call(Subscriber<? super Integer> observer) {
        try {
            if (!observer.isUnsubscribed()) {
                for (int i = 1; i < 5; i++) {
                    observer.onNext(i);
                }
                observer.onCompleted();
            }
        } catch (Exception e) {
            observer.onError(e);
        }
    }
 } ).subscribe(new Subscriber<Integer>() {
        @Override
        public void onNext(Integer item) {
            System.out.println("Next: " + item);
        }

        @Override
        public void onError(Throwable error) {
            System.err.println("Error: " + error.getMessage());
        }

        @Override
        public void onCompleted() {
            System.out.println("Sequence complete.");
        }
    });

結果

Next: 1
Next: 2
Next: 3
Next: 4
Sequence complete.

just:(2-9個參數)

Observable.just(1, 2, 3)
          .subscribe(new Subscriber<Integer>() {
        @Override
        public void onNext(Integer item) {
            System.out.println("Next: " + item);
        }

        @Override
        public void onError(Throwable error) {
            System.err.println("Error: " + error.getMessage());
        }

        @Override
        public void onCompleted() {
            System.out.println("Sequence complete.");
        }
    });

結果

Next: 1
Next: 2
Next: 3
Sequence complete.

from

 List<String> list = new ArrayList<>();  
    list.add("a");  
    list.add("b");  
    list.add("c");  
    Observable.just(list).subscribe(new Subscriber<List<String>>() {  
      @Override public void onCompleted() {  

      }  

      @Override public void onError(Throwable e) {  

      }  

      @Override public void onNext(List<String> strings) {  

      }  
    });  

    Observable.from(list).subscribe(new Subscriber<String>() {  
      @Override public void onCompleted() {  
        Log.e("--------onCompleted ", "onCompleted");  
      }  

      @Override public void onError(Throwable e) {  

      }  

      @Override public void onNext(String s) {  
        Log.e("--------onNext ", "s : " + s);  
      }  
    });  

結果

04-22 17:45:22.092  12883-12883/com.fernandocejas.android10.sample.presentation E/--------onNext﹕ s : a  
04-22 17:45:22.092  12883-12883/com.fernandocejas.android10.sample.presentation E/--------onNext﹕ s : b  
04-22 17:45:22.092  12883-12883/com.fernandocejas.android10.sample.presentation E/--------onNext﹕ s : c  
04-22 17:45:22.092  12883-12883/com.fernandocejas.android10.sample.presentation E/--------onCompleted﹕ onCompleted  

create( )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章