是否可以从可观察对象中获取最新元素,就像我订阅它并将该值用于动作一样?
我尝试了下面的代码,但这不起作用。
this.af.database.list('photos')
.single()
.do(res => console.log(res))
//I want to navigate to another routerLink in the do statement
答案 0 :(得分:0)
所以,我要做一个假设。你想要一个长期可观察的最新值。
为此,您需要确保observable是一个BehaviorSubject(它始终具有可供使用的初始值),或者已使用publishReplay运算符进行了可重放。使用publishReplay时,你会得到一个ConnectableObserbable,请务必调用connect。
完成此操作后,您可以使用take(1)限制为单个元素。
例如,假设你想根据最近的点击位置采取一些行动。
var source = Observable.fromEvent(document, 'click')
.publishReplay(1);
source.connect();
然后再
source.take(1).subscribe(ev => console.log(`(${ev.clientX}, ${ev.clientY})`));