В настоящее время я пытаюсь реализовать опрос серверов с использованием RxJava, я провел некоторое исследование о том, как повторить всю цепочку после получения ответа сервера, я попытался использовать repeat(), it работает, но не работает, что идеально, причина в том, что он делает api call столько раз, и серверу требуется дополнительное время для обработки данных перед отправкой клиенту, но мы не знаем точное время, поэтому мы не можем использовать repeatWhen(), чтобы дать конкретное время. Единственное, что я могу использовать, - это подождать после ответа api.Опрос сервера с использованием RxJava - повторить после получения ответа сервера
Любой совет будет оценен!
Ниже фрагмент кода:
retrofitService.requestPolling()
.repeat() // do not wait to call server so many times
.takeUntil(new Func1<PollResponse, Boolean>() {
@Override
public Boolean call(PollResponse pollResponse) {
return pollResponse.mComplete;
}
})
.doOnNext(new Action1<FlightSearchPollResponse>() {
@Override
public void call(pollResponse pollResponse) {
// update UI here
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<PollResponse>() {
@Override
public void onCompleted() {
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(PollResponse pollResponse) {
});
EDIT: Я новичок в RxJava, только что получил эту тему под названием противодавление, и есть много статей объяснили, как бороться с этим, так как я не хочу кешируйте этот ответ, кажется, что Тема будет хорошим вариантом, это позволяет вам контролировать, когда тянуть.
http://akarnokd.blogspot.com/2015/06/subjects-part-1.html
И благодаря @Gary LO