Il RxJava v1.0.13 ha introdotto il nuovo tipo di un Osservabile: rx. Singolo. Si adatta perfettamente al modello richiesta-risposta ma manca degli effetti collaterali standard che introducono operatori come doOnNext(). Quindi, è molto più difficile far accadere più cose come risultato.Come creare la cache/versione hot di rx.Single?
La mia idea era di sostituire doOnNext() con più abbonamenti alla stessa istanza singola. Ma questo può causare il lavoro di underlaying più volte: una volta per ogni abbonamento. implementazione
Esempio rx.Single:
private class WorkerSubscribe<SomeData>() : Single.OnSubscribe<SomeData> {
override fun call(sub: SingleSubscriber<in SomeData>) {
try {
val result = fetchSomeData()
sub.onSuccess(result)
} catch(t: Throwable) {
sub.onError(t)
}
}
}
val single = Single.create<SomeData>(WorkerSubscribe())
Usage:
single.subscribe({}, {})
single.subscribe({}, {}) // Data is fetched for the second time
E 'possibile creare un'istanza di unico che non sarà fetchSomeData() più volte, anche quando single.subscribe() è chiamato più volte, ma cache e restituisce lo stesso risultato?
Non sarebbe un passo indietro da utilizzare singolo, in primo luogo? – atok
pubblicherai un esempio di codice in modo che la soluzione non debba essere dedotta? –