次のシナリオのための右のRxJava演算子は何ですか:これを行うには適切なRxJava演算子は何ですか?
ネットワークからそれを取得し、別のネットワーク要求を実行するためにそれを使用しない場合、私は、私が保存されたトークンを持っているかどうかを確認したいです。
and/then/when
、またはfilter
とflatMap
の組み合わせで行う必要がありますが、わからないと思います。
次のシナリオのための右のRxJava演算子は何ですか:これを行うには適切なRxJava演算子は何ですか?
ネットワークからそれを取得し、別のネットワーク要求を実行するためにそれを使用しない場合、私は、私が保存されたトークンを持っているかどうかを確認したいです。
and/then/when
、またはfilter
とflatMap
の組み合わせで行う必要がありますが、わからないと思います。
これを解決する方法はたくさんあります。もう1つの一般的な解決策はObservable.concat
です。
// Our sources (left as an exercise for the reader)
Observable<Data> memory = ...;
Observable<Data> disk = ...;
Observable<Data> network = ...;
// Retrieve the first source with data
Observable<Data> source = Observable
.concat(memory, disk, network)
.first();
ケースには2つの観測値が必要です。トークンがローカルストレージに存在する場合は、concat
はネットワークに登録されません。ブログ記事の詳細
コードサンプルthis blog post。
これが探してyou're何であれば、私は知らないが、構造は、ネットワークのキャッシングがために観察要求のために `cache`には役に立つことができることをも
Observable.just(getToken())
.filter(token->Strings.isNullOrEmpty(token))
.map(this::findNewToken)
.cache()
.subscribe(token -> println("Your new Token")
注かなり簡単でなければなりません例。 –