私はわからないんだけど、私はあなたが次々と要求を実行するとしますと、あなたは次の要求を実行するために、以前の要求からいくつかのデータを必要とします。
私たちは、次のFlowable
オブジェクトを持っている、のは、言ってみましょう:
Flowable<String> first = Flowable.fromCallable(() -> {
Thread.sleep(2000);
return "I need to be executed first";
});
Flowable<String> second = Flowable.fromCallable(() -> "I need to be executed later");
まずFlowable
は遅くなりますが、我々はfirst
後second
を実行したいです。
我々はconcat(...)
オペレータに次のようにそれを行うことができます:要求が正しい順序で実行されるようにRxJavaのドキュメントによると
Flowable.concat(first, second).subscribe(System.out::println);
は、CONCAT演算子は、それらをインターリーブすることなく、2つの以上の観測からの排出量を放出します。
最初の要求の条件に応じて、またはFlowable
の最初のFlowable
のデータを使用して、2番目の要求を実行することもできます。次のようにあなたがflatMap(...)
オペレータとそれを達成することができます
:この例では
first.flatMap(
s -> s.equals("I need to be executed first")
? second
: Flowable.empty())
.subscribe(System.out::println);
を、二Flowable
は、最初のものは、私たちがしたいとまったく同じであるときにのみ放出されます。そうでない場合は、空のFlowable
が発行されます。 2番目の1に最初Flowable
からのデータを使用したい場合は、ちょうどそのようsecond
Flowable
を返す代わりflatMap(...)
オペレータ内に新しい、カスタムFlowable
を作成することができます。
first.flatMap(
s -> s.equals("I need to be executed first")
? Flowable.fromCallable(() -> "I'm using data from the first Flowable: ".concat(s))
: Flowable.empty())
.subscribe(System.out::println);
私は願って、この答えは役立ちます君は。
私はhttps://stackoverflow.com/questions/28047272/handle-paging-with-rxjavaには解決策の指針があると思います –