【发布时间】:2017-07-13 09:35:42
【问题描述】:
我有两个 observables
-
load$是加载事件流,在启动或单击重新加载按钮时发出 -
selection$是选定列表项的流,在选择列表项时发出
我想知道是否有一个运算符可以让我 (A) 在 load$ 发出时获取 selection$ 发出的最新值,而 (B) 忽略 load$ 发出的值。
我能够通过使用 withLatestFrom 来完成 (A),但这并不满足 (B),因为 withLatestFrom 不会忽略源 observable。
load$.withLatestFrom(selection$).subscribe(([_, latestSelection) => {
// _ is not needed and I don't like to write code like this
// I only need the latest selection
});
我查看了满足 (B) 但不满足 (A) 的 switchMapTo,但同时不使用 first() 或 take(1)。
load$.switchMapTo(selection$.take(1)).subscribe(latestSelection => {
// I would like to avoid having to use take(1)
});
我正在寻找一个假设的 switchMapToLatestFrom 运算符。
load$.switchMapToLatestFrom(selection$).subscribe(latestSelection => {
// switchMapToLatestFrom doesn't exist :(
});
不幸的是,它不存在,而且我不喜欢我想出的另外两种方法,因为代码包含 take(1) 或未使用的参数的原因并不是很明显。
有没有其他方法可以组合两个可观察对象,以便每当第一个可观察对象发出时,新的可观察对象只发出第二个可观察对象的最新值?
【问题讨论】:
标签: javascript rxjs reactive-programming