Sono nuovo di rxjava. Ho bisogno di combinare due osservabili che emettono oggetti di diverso tipo. Qualcosa di simile Observable<Milk>
e Observable<Cereals>
e ottenere un Observable<CerealsWithMilk>
. Non sono riuscito a trovare nessun operatore per qualcosa di simile. Quale sarebbe il modo migliore per fare qualcosa del genere? Si noti che Milk
e Cereals
sono asincrone.rxjava fondono osservabili di diverso tipo
30
A
risposta
47
È difficile dire senza sapere esattamente ciò che è necessario, ma probabilmente zip() o combineLatest().
zip
avrà sia Observable<Milk>
e Observable<Cereals>
e lasciare che li combinano in CerealsWithMilk
tramite una funzione fornita. Questo emette un nuovo CerealsWithMilk
ogni volta che ottieni sia a Milk
e a Cereals
.
combineLatest
è simile a zip
tranne emetterà un nuovo CerealsWithMilk
anche se solo un nuovo Milk
o solo un nuovo Cereals
viene emessa.
2
Se si desidera unire osservabili di tipo diverso è necessario utilizzare Observable.zip
:
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.zip(o1, o2, (a, b) -> a + b);
result
sarà un osservabile generare l'applicazione di (a, b) -> a + b
a o1
's e o2
' s articoli. Risultante in un ottenibile ottenibile "a1", "b2", "c3"
.
Problemi correlati
- 1. RxSwift: Utilizzare Zip con diverso tipo osservabili
- 2. Concatenamento di osservabili RxJava con richiamate/ascoltatori
- 3. RxJava uniscono flussi osservabili abbinando valore dell'attributo
- 4. Come filtrare i valori duplicati emessi da osservabili in RXJava?
- 5. RxJava concatenamento degli osservabili e gestione degli errori (propagazione delle eccezioni personalizzate)
- 6. RxJava, esegui codice nel thread observer prima di concatenare due osservabili
- 7. flatZip in RxJava
- 8. In RxJava, come passare una variabile lungo quando si concatenano gli osservabili?
- 9. RxJava onErrorResumeNext()
- 10. Combinazione di osservabili booleani
- 11. ExtJS fondono oggetti
- 12. RxJava condividere le emissioni di un 'osservabile tra più abbonati
- 13. RxJava tentativi basati sulla logica
- 14. Concatenazione di servizi di retrofit con supporto RxJava
- 15. Rendere gli oggetti osservabili
- 16. "... redeclared come diverso tipo di simbolo"?
- 17. abbinando due liste di tipo diverso insieme
- 18. Avviso gcc per tipo di ritorno diverso
- 19. Utilizzo di RxJava nell'adattatore RecyclerView
- 20. Yaml si fondono in Python
- 21. Come ramo e si fondono in TFS
- 22. Osservabili limitanti la velocità
- 23. q.all per osservabili angular2
- 24. Chaining osservabili in RxJS
- 25. Modo efficiente per manipolare i thread RxJava
- 26. Combinando osservabili in modo condizionale
- 27. RxJava come bus eventi?
- 28. SCD di tipo II con entità che si fondono nel tempo
- 29. RxJava Osservabile ricevere una notifica sulla prima emissione
- 30. Utilizzo di RxJava e Okhttp
Zip sembra esattamente quello di cui ho bisogno. Grazie! – Jelly
Nota: (a condizione che ciascuno dei valori osservabili di origine abbia emesso almeno un elemento). – LEO