RxSwift - withLatestFrom 结合来自两个可观察值的值

RxSwift - withLatestFrom combining values from both observables

我想达到这样的效果:

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

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

所以基本上类似于 withLatestFrom 但结合了两个可观察值的值(如结合最新)。

我想没有现成的操作员。知道如何实现吗?

只需使用您 withLatestFrom 的结果选择器。没有闭包的重载实现简单地忽略了第一个可观察对象。例如:

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

您可以通过使用 combineLatestdistinctUntilChanged 后跟 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
}

短版,其中 R = input.r 和 L = input.l

let output = input.r
.withLatestFrom(input.l) { ([=10=], ) }