2017-09-27 13 views
0

条件の後に追加した場合、RxJavaが3番目の完了(completable3)を実行しないのはなぜですか?条件付きで完了したチェーン

私は、チェーンが壊れているように見える唯一のケースではないことに気づいたので、以下のコードが期待通りに実行されない根本的な理由を知りたいと思います。私は私のようなもの行うことができます知っている

Completable chain = completable1 
    .andThen(completable2); 

if(condition) 
    chain.andThen(completable3); 

chain.subscribe(); 

:RxJavaに

completable1 
    .andThen(completable2); 
    .andThen(Completable.defer(() => { 
     if(condition) 
      return completable3; 
     else 
      return Completable.complete(); 
    })) 
    .subscribe(); 

答えて

1

演算子を使用すると、無操作で返さCompletable結果を無視して、それゆえ、作曲続けるべき新しいインスタンスを返します。あなたは2番目の例で正しいことをしました。私はそれを見ていないためそれほど悪い感じ

Completable chain = completable1 
    .andThen(completable2); 

if (condition) { 
    chain = chain.andThen(completable3); 
} 

chain.subscribe(); 
+0

:最初たとえば、andThenによって返された変調インスタンスを持つチェーンの参照を置き換えることができます。ありがとう! – ingkevin