2017-11-18 22 views
0

RxJavaの新機能で、このユースケースの解決方法を見つけることができないようです。私はこれについて2日間今や幸運を研究してきました。RxJava api呼び出しが成功したときにのみキャッシュを呼び出すようにしたい

は私が

私が最初にリモートサーバ上のユーザデータを保存する呼び出す私のアプリでは、ユーザーを登録する2枚のシングル、リモートキャッシュを、持っている、と正常に保存を示すために、カスタムコードを返します。私は、リモートからのカスタムコードをチェックして成功した後にのみ、キャッシュを呼びたいと思う。カスタムコードがエラーとして返ってきたら、それを返して、キャッシュにまったく行きません。

答えて

1

探している演算子はflatMapです。例:

remoteApi.login().flatMap(new Function<String, SingleSource<String>>() { 
    @Override public SingleSource<String> apply(String response) throws Exception { 
    if (response.equals("success")) { 
     // do what you want to do with cache 
     return cache.save(response); 
    } 
    return Single.just(response); 
    } 
}).subscribe(yourObserver); 

+0

... subscribeOnとobserveOnを使用することを忘れないでください、私はついに昨日、それを考え出したとflatMapを使用して終了しました。私は "cache.save"を書き込んだときに "returnメソッドはここで許可されていません"というエラーを出したので、 "cache.save"を書きました。これをkotlin btwで行う –

関連する問題