Ste*_*ens 3 javascript reactive-programming rxjs
我有两个可观察者
load$ 是一个加载事件流,在启动时或单击重新加载按钮时发出selection$ 是选定列表项时发出的选定列表项的流我想知道是否有一个运算符让我(A)得到selection$每次load$发出时发出的最新值,而(B)忽略发出的值load$.
我能够通过使用withLatestFrom但不满足(B)来完成(A),因为withLatestFrom不会忽略源可观察的.
load$.withLatestFrom(selection$).subscribe(([_, latestSelection) => {
// _ is not needed and I don't like to write code like this
// I only need the latest selection
});
Run Code Online (Sandbox Code Playgroud)
我看过switchMapTo哪个满足(B)但不满足(A)而不使用first()或take(1).
load$.switchMapTo(selection$.take(1)).subscribe(latestSelection => {
// I would like to avoid having to use take(1)
});
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个假设的switchMapToLatestFrom运营商.
load$.switchMapToLatestFrom(selection$).subscribe(latestSelection => {
// switchMapToLatestFrom doesn't exist :(
});
Run Code Online (Sandbox Code Playgroud)
不幸的是它不存在,我不喜欢我提出的另外两种方式,因为代码包含take(1)或未使用的参数并不是很明显.
有没有其他方法可以组合两个observable,以便只要第一个observable发出,新的observable只发出第二个observable的最新值?
withLatestFrom采用project传递值的可选函数.
您可以使用它来忽略值load$并仅发出最新选择:
load$
.withLatestFrom(selection$, (load, selection) => selection)
.subscribe(selection => {
// ...
});
Run Code Online (Sandbox Code Playgroud)