需要结合以下两个观察值:


observable1发出{ x: value1 }
observable2发出{ y: value2 }


进入observable3发出:


{ x: value1, y: value2 }触发时的observable1value2observable2发出的最后一个值)
{ y: value }触发时的observable2


换句话说,对于combineLatest发出,其行为应类似于observable1;对于merge发出,其行为应类似于observable2

有没有一种优雅的方式来做到这一点?

最佳答案

你可以做:

observable3 = Rx.Observable.merge(observable1.withLatestFrom(observable2), observable2)


请注意,combineLatest在这里不起作用,因为它将等待observable2产生一个值。 withLatestFrom是从observable2中获取的最新值,无需等待。

我还建议您测试边缘情况:


observable2尚未发出任何值(withLatestFrom可能会阻塞并等待,文档中尚不清楚)
observable2在创建observable3之前已经完成

09-25 19:01