web-dev-qa-db-fra.com

RxSwift - withLatestFrom combinant les valeurs des deux observables

Je veux atteindre un résultat comme celui-ci:

L -1-2-3------4------5-6-7-8----
R ---------A------B----------C--

O ---------A3-----B4---------C8

Donc, fondamentalement, quelque chose comme withLatestFrom mais en combinant les valeurs des deux observables (comme combine tout dernier).

Je suppose qu'il n'y a pas d'opérateur prêt pour cela. Une idée comment y parvenir?

8
Wujo

Utilisez simplement le sélecteur résultant de votre withLatestFrom. L'implémentation surchargée sans fermeture ignore tout d'abord l'observable. Par exemple:

Observable.just("one")
  .withLatestFrom(Observable.just(1)) 
  { oneAsString, oneAsInt in return (oneAsString, oneAsInt) }
11
Timofey Solonin

Vous pouvez y parvenir en utilisant combineLatest avec distinctUntilChanged suivi de map.

Observable.combineLatest(L,R) { lhs, rhs in
     return (lhs, rhs)
}
.distinctUntilChanged { last, new in 
     return last.1 != new.1
}
.map { combined in
     //Do your thing to create the combination
}
1
Caio Sym