0
如何从AsyncTask(从doInBackground
方法)将以下代码更改为RxJava?从AsyncTask到RxJava的改造请求周期
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
方法是这样的:
private String getNextUrl(Call<MessageRs> response, MessageRq rq) throws Exception {
Response<MessageRs> rs = response.execute();
rq.setData(...);
...
return rs.body().getLink();
}
我换成Call<MessageRs>
与Observable<MessageRs>
和,从我的理解,我需要flatMap
。但我不明白如何正确地使用它...
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?);