2016-09-26 2 views
1

RxJavaRetrofitの同期コールを実装する必要があります。ArrayListのIDがあります。私はこの配列を繰り返し、各IDのためにWebサーバーへの呼び出しをRetrofitを使用して行う必要がありますが、これを行う方法はわかっていますが、1つの呼び出しが終了した後にキュー内でこれを行う方法を教えてくれます。RxJavaによるリクエストのキュー

+0

もしあなたが 'onSuccess'コールバックを持っていれば、' onSuccess'が呼ばれるたびにインクリメントされたインデックスで反復された配列オブジェクトを渡して、あなたの配列があなたの配列のサイズと同じになるまで渡すことができます。 –

+0

私はそれについて考えましたが、おそらくRxJavaはこのタスクの実装をより明確にしていますか? – Near1999

答えて

0

あなたの質問は非常にあいまいですが、私はそれを理解していると思います。アイテムのリストから始めて、from()でこれらのオブザーバブルを作成することができます。この値は、API呼び出し後にマップすることができます。 concatMap()を使用すると、結果の順序が保証され、結果を効果的に観察することができます。これらはあなたが望むものを何でもすることができ、それにもtoBlocking()を呼び出して観察可能な同期をとることさえできます。しかし、これは必要ありません。

List<Result> results = 
     Observable.from(ids) 
        .concatMap(id -> callToWebServer(id)) 
        .toList() 
        .toBlocking() 
        .single(); 
+0

.single()メソッドは何をしますか? – Near1999

+0

あなたに最初のアイテムを与え、多かれ少なかれスローします。 – tynn

+0

改造を行っていない – Near1999

0

このコードは

Observable.from(ids) 
      .map(id -> callToWebServer(id).toBlocking().first()) 

synchroniousそれらを実行します。しかし、あなたは慎重マップ()に)callToWebServer(からすべてのネットワーク・エラーを処理する必要があります。

関連する問題