rxjs:从Observables集合中获取最后一个值

时间:2019-07-24 08:25:21

标签: rxjs

我有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.

expected behavior

我找不到用于此操作的运算符。一种解决方案是订阅所有可观察的对象,然后使lastValue成为Subject并使用next更新其值,但是我想避免订阅所有可观察的对象。

谢谢

2 个答案:

答案 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