Я использую Retrofit
для вызова API, который возвращает Single
, и я использую onErrorReturn
для преобразования любых исключений в объект по умолчанию. Я хочу, чтобы потребители видели текущее значение, но если текущее значение является объектом по умолчанию, я хочу попробовать запросить API и дополнительно отправить этот результат. Чтобы усложнить ситуацию, у меня может быть несколько подписчиков.
Итак, я знаю, что Retrofit
Single
должен быть преобразован в правильный Observable
поток, а не просто onNext
/ onComplete
, как обычный Single.toObservable
, но я не знаю как запросить API и отправить значение обратно моим предыдущим подписчикам, используя только Single
из Retrofit
.
Прямо сейчас я делаю:
fun request(): Observable<Foo> {
if (behaviorSubject.value == defaultObject) {
API
.request()
.onErrorReturn(defaultObject)
.subscribe(behaviorSubject)
}
return behaviorSubject
}
Но я знаю, что вызов subscribe
нарушает цепочку Rx, поэтому я пытаюсь выяснить, как от этого избавиться.