Ваш поток несколько прерван, пожалуйста, укажите fetchAvailableSubscriptions
как Observable<ResponseWithStatus>
.Таким образом, у вас не будет обратного вызова в обратном вызове, и его будет проще реализовать с помощью оператора takeUntil
. Вы можете сделать это, поместив Manager.fetchAvailableSubscriptions
в Observable.fromCallable
или Observable.create
.Тогда ваш поток будет выглядеть более или менее как
Disposable disposable = Observable.interval(interval, TimeUnit.SECONDS)
.take((int)(maxTimeForRequestInSecond / interval))
.flatMap(__ -> fetchAvailableSubscriptionsObservable())
.takeUntil(responseWithStatus -> status == WebService.Status.Success)
.subscribe(responseWithStatus -> {
// use the response
});