有条件地组合两个可观察量
Conditionally combining two observables
需要结合以下两个可观察量:
observable1
发出 { x: value1 }
observable2
发出 { y: value2 }
进入 observable3
发出:
{ x: value1, y: value2 }
当 observable1
触发时(value2
是 observable2
发出的最后一个值)
{ y: value }
当 observable2
触发时
换句话说,对于 observable1
发射,它应该表现得像 combineLatest
,对于 observable2
发射,它应该表现得像 merge
。
有没有优雅的方法来做到这一点?
你可以这样做:
observable3 = Rx.Observable.merge(observable1.withLatestFrom(observable2), observable2)
请注意,combineLatest
在这里不起作用,因为它会等待 observable2
产生一个值。 withLatestFrom
无需等待即可从 observable2
获取最新值。
我还建议您测试边缘情况:
observable2
尚未发出任何值(withLatestFrom
可能会阻塞并等待,文档中不清楚)
observable2
在您创建 observable3
之前已完成
需要结合以下两个可观察量:
observable1
发出{ x: value1 }
observable2
发出{ y: value2 }
进入 observable3
发出:
{ x: value1, y: value2 }
当observable1
触发时(value2
是observable2
发出的最后一个值){ y: value }
当observable2
触发时
换句话说,对于 observable1
发射,它应该表现得像 combineLatest
,对于 observable2
发射,它应该表现得像 merge
。
有没有优雅的方法来做到这一点?
你可以这样做:
observable3 = Rx.Observable.merge(observable1.withLatestFrom(observable2), observable2)
请注意,combineLatest
在这里不起作用,因为它会等待 observable2
产生一个值。 withLatestFrom
无需等待即可从 observable2
获取最新值。
我还建议您测试边缘情况:
observable2
尚未发出任何值(withLatestFrom
可能会阻塞并等待,文档中不清楚)observable2
在您创建observable3
之前已完成