WebサービスAPIは、ページングを使用することがあります。ここで、Webサービス呼び出しのパラメータは、取得するページを示します。これらは、大きく2種類に分けることができます:パラメータがページを要求するページ単位のWebサービス呼び出しにRxJavaを使用する方法、各ページが前のページのレスポンスに依存する、再帰を使用しない場合
ものは任意のページ応答とは無関係である
(例えば、「10のページサイズで、私のページ#3を与えます」)ページを要求するためのパラメータがいくつか前のページ応答(例えば、「foo
の識別子を持つ項目の後に私の次の10の項目を与える)に依存しているワンズ
This SO answer最初のシナリオをカバーうまく、どこにWebサービスはページ番号だけを必要としており、与えられたページの応答から判断する必要があるのは、完了したかどうかである。
This SO answerは再帰に依存しているため、大きなデータセットの場合はStackOverflowError
で死にます。
Relay's specification for paginationは、前の応答から "カーソル"を与えて、そのカーソルの後の次の項目を取得する必要があるため、リレー対応のGraphQLを使用したWebサービス(GitHubのAPIなど)では、ポジション。だから、私はこのための非再帰的なアプローチを見つけようとしています。それでも、すべてのものを単一のマスターObservable
にまとめています。 WebサービスAPIをブロックしているか、そしてソリューションをブロックして喜んでいる場合
:あなたは次のような出力が表示されます。このテストを実行
'Flowable.observeOn(Schedulers.io())' - 内部 'Flowable'コールの内部 –
WebサービスAPIがブロックされているか、またはObservableを返しますか?問題は、APIを使用するには、次の結果を要求するために前の結果が完了するのを待つ必要があるということです。あなたがブロックしようとするならば、解決は簡単です。 – hgrey