2016-08-04 10 views
1

次のシナリオのための右のRxJava演算子は何ですか:これを行うには適切なRxJava演算子は何ですか?

ネットワークからそれを取得し、別のネットワーク要求を実行するためにそれを使用しない場合、私は、私が保存されたトークンを持っているかどうかを確認したいです。

and/then/when、またはfilterflatMapの組み合わせで行う必要がありますが、わからないと思います。

+0

注かなり簡単でなければなりません例。 –

答えて

2

これを解決する方法はたくさんあります。もう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

1

これが探してyou're何であれば、私は知らないが、構造は、ネットワークのキャッシングがために観察要求のために `cache`には役に立つことができることをも

Observable.just(getToken()) 
     .filter(token->Strings.isNullOrEmpty(token)) 
     .map(this::findNewToken) 
     .cache() 
     .subscribe(token -> println("Your new Token") 
関連する問題