2016-06-14 4 views
1

私はrxjava拡張子rxjavaとして/シーケンスRetrofit2ずに終了するのに観察のカップルを待っている - アンドロイド

に換装2を使用し、私が何とかして今3つの別物

Observable<String> observable1 = RetrofitInterface.GetByID(id); 
Observable<String> observable2 = RetrofitInterface.GetByKey(key); 
Observable<String> observable3 = RetrofitInterface.GetByValue(value); 

を行います3つの観測を持っています

observable1.subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .unsubscribeOn(Schedulers.io()) 
       .subscribe(new Subscriber<String>() { 
        @Override 
        public void onCompleted() { 
        } 

        @Override 
        public void onError(Throwable e) { 
        } 

        @Override 
        public void onNext(String str1) { 
         // do some stuff here 
        } 
       }); 
:ユーザーは、私はこれを行うそれらを実行するために一緒に

をそれらのすべてを実行するオプションを持っています

ユーザーはここに3つのオプションを持っている

  1. 実行それぞれと一緒の観察可能なすべての個別
  2. ラン3およびshow結果
  3. に仕上げる順番に実行し、結果を一つずつ得るためにそれらを待ちます。

Retrofitによって送信されたこれらの3つの観測値を持つRxjavaの最後の2つのオプションはどうすればできますか?あなたはこのように、ジッパーを使用して到達することができ

答えて

3

第二のオプションは:

public class ExampleUnitTest { 
    @Test 
    public void testSample() throws Exception { 
     Observable<String> observable1 = Observable.just("I"); 
     Observable<String> observable2 = Observable.just("Love"); 
     Observable<String> observable3 = Observable.just("RxJava"); 

     Observable.zip(observable1, observable2, observable3, 
       (s1, s2, s3) -> { 
        return String.format("%s %s %s", s1, s2, s3); 
       } 
     ).subscribe(System.out::println); 
    } 
} 

それはI Love RxJavaを印刷します。 zip documentationsをご覧ください。

あなたは連結では達成秒1、それをチェックアウト:

public class ExampleUnitTest { 
    @Test 
    public void testSample() throws Exception { 
     Observable<String> observable1 = Observable.just("I"); 
     Observable<String> observable2 = Observable.just("Love"); 
     Observable<String> observable3 = Observable.just("RxJava"); 

     Observable.concat(observable1, observable2, observable3) 
       .subscribe(System.out::println); 
    } 
} 

をそれが印刷されます:

I 
Love 
RxJava 

concat documentationを見てみましょう。

よろしくお願いいたします。

+0

'zip'を使うときにエラーを処理することを忘れないでください。例えば、オブザーバブルの1つがonError | onCompletedで終了し、他のオブザーバブルが値を放出しない場合などです。 – marwinXXII

関連する問題