我有2个可观察值,并且我想获得发出的最后一个值。
示例:
private obs1: Observable<number> = interval(1000);
private obs2: Observable<number> = interval(700);
public lastValue; // should take the value of the last observable which emitted.
我找不到用于此操作的运算符。一种解决方案是订阅所有可观察的对象,然后使lastValue成为Subject并使用next更新其值,但是我想避免订阅所有可观察的对象。
谢谢
答案 0 :(得分:0)
您需要combineLatest
:
import { combineLatest } from 'rxjs';
combineLatest(obs1, obs2)
.subscribe(([valueOfObs1, valueOfObs2]) => //...
答案 1 :(得分:0)
您可以使用merge
将两个可观察对象合并为一个,然后按照发出它们的顺序返回值。.因此,在订阅时,您总是会收到最新的值。
merge(obs1, obs2).subscribe(result => {console.log(result)})
如果观测值完成,则可以将以上内容与takeLast
组合以获取最后发出的x个值。
您还可以包装实现并制作自己的BehaviourSubject