需要结合以下两个观察值:observable1
发出{ x: value1 }
observable2
发出{ y: value2 }
进入observable3
发出:{ x: value1, y: value2 }
触发时的observable1
(value2
是observable2
发出的最后一个值){ y: value }
触发时的observable2
换句话说,对于combineLatest
发出,其行为应类似于observable1
;对于merge
发出,其行为应类似于observable2
。
有没有一种优雅的方式来做到这一点?
最佳答案
你可以做:
observable3 = Rx.Observable.merge(observable1.withLatestFrom(observable2), observable2)
请注意,
combineLatest
在这里不起作用,因为它将等待observable2
产生一个值。 withLatestFrom
是从observable2
中获取的最新值,无需等待。我还建议您测试边缘情况:
observable2
尚未发出任何值(withLatestFrom
可能会阻塞并等待,文档中尚不清楚)observable2
在创建observable3
之前已经完成