AsyncTask(doInBackground
メソッド)から次のコードをRxJavaに変更するにはどうすればよいですか?AsyncTaskからRxJavaへの改造要求サイクル
private String getNextUrl(Call<MessageRs> response, MessageRq rq) throws Exception {
Response<MessageRs> rs = response.execute();
rq.setData(...);
...
return rs.body().getLink();
}
私はObservable<MessageRs>
でCall<MessageRs>
を交換し、私が理解から、私はflatMap
が必要になります。
MessageRq rq = new MessageRq();
rq.setId(id);
Call<MessageRs> response = App.getApi().getFirstCommand(rq);
nextLink = getNextUrl(response, rq);
for (int i = 0; i< 10; i++) {
response = App.getApi().authorize(nextLink, rq);
nextLink = getNextUrl(response, rq);
}
getNextUrl
方法は次のようになります。しかし、私はそれを正しく使用する方法を理解していない...あなたが直面している
myApi.getFirstCommand(rq)
.subscribeOn(Schedulers.newThread())
.flatMap(response -> { // How can I transfer here both response and rq?
// and how to do it exactly 10 times?
// maybe after flatMap I should add .forEachWhile(cycle < 10) ?
String nextLink = getNextUrl(response, rq);
myApi.authorize(nextLink, rq);
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(// from what I understand, here I should update UI, right?);