Я новичок в Rx Java и пытаюсь найти решение моей проблемы.Я хочу вернуть Single для вызывающей стороны, но данные недоступны при вызове этого метода, они будут заполнены либо до того, как будет выполнен этот вызов, либо после того, как этот вызов сделан.Наивный пример того, что я пытаюсь сделать, приведен ниже.CompletableFuture частично решает его, но я ищу решение Rx, возможно, с противодавлением.
val receiver = Receiver()
class Receiver {
var data = ""
// this returns a single but does not have data, but will be available after call to onComplete
request(): Single<Data> {
return Single.fromFuture(completableFuture)
}
onNext(data: String) {
data.append(data)
}
onComplete() {
completableFuture.complete(data)
}
}
class Processor {
fun process() {
receiver.onNext("1")
receiver.onNext("2")
receiver.onComplete()
}
}
class Caller {
fun call() {
// This should get "12" result
// Processor().process() can be called before or after caller subscibe
receiver.request()..subscribe(...)
}
}